안드로이드 전화 수신 이벤트 체크하기
간단한 동영상, mp3파일을 이용하여 어플리케이션을 만든적이 있습니다.
한달간 피드백을 받아본 결과 유저들의 추가 요구 사항은 주로 비슷한 요청이 많았습니다.
사용자 요청 사항
- 화면이 꺼지더라도 계속 소리가 나왔으면 좋겠어요.
- 무한 반복 설정이 있었으면 좋겠어요.
이 두가지를 해결하여 다시 마켓에 올린 결과 검증이 있는 마켓은 리젝이 되었습니다.
이유인 즉슨, "음악이 재생중인데 전화가 오면 전화소리와 음악소리가 겹친다." 였습니다.
그래서 찾아 보았습니다. 전화가 왔을때를 확인 할 수 있느냐?
생각보다 간단하더군요.
전화 수신을 체크하기 위해서는 아래와 같은 녀석들이 필요 합니다.(권한 까먹지 맙시다.)
- TelephonyManager
- PhoneStateListener
- 매너페스트에 (PHONE_STATE_STATE) 권한설정하기
그럼 코드는 아래와 같이 작성 하시면 됩니다.
< PhoneListenerTestActivity.java >
package com.tistory.jwandroid.phonelistener;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.widget.Toast;
public class PhoneListenerTestActivity extends Activity {
PhoneStateCheckListener phoneCheckListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
phoneCheckListener = new PhoneStateCheckListener(this);
TelephonyManager telephonyManager =
(TelephonyManager)getSystemService(TELEPHONY_SERVICE);
telephonyManager.listen(phoneCheckListener,
PhoneStateListener.LISTEN_CALL_STATE);
}
public class PhoneStateCheckListener extends PhoneStateListener {
PhoneListenerTestActivity mainActivity;
PhoneStateCheckListener(PhoneListenerTestActivity _main){
mainActivity = _main;
}
@Override
public void onCallStateChanged(int state, String incomingNumber) {
if (state == TelephonyManager.CALL_STATE_IDLE) {
Toast.makeText(mainActivity,"STATE_IDLE : Incoming number "
+ incomingNumber,Toast.LENGTH_SHORT).show();
} else if (state == TelephonyManager.CALL_STATE_RINGING) {
Toast.makeText(mainActivity,"STATE_RINGING : Incoming number "
+ incomingNumber,Toast.LENGTH_SHORT).show();
//수신 부분 입니다.
} else if (state == TelephonyManager.CALL_STATE_OFFHOOK) {
Toast.makeText(mainActivity,"STATE_OFFHOOK : Incoming number "
+ incomingNumber,Toast.LENGTH_SHORT).show();
}
}
}
}
< AndroidManifest.xml >
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.tistory.jwandroid.phonelistener"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="10" />
<uses-permission
android:name="android.permission.READ_PHONE_STATE"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".PhoneListenerTestActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
요러게 하시면 됩니다. 궁금하신 사항은 댓글 달아 주세요.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드/Android] 안드로이드 인텐트 - 2 (0) | 2012.05.07 |
---|---|
[안드로이드/Android] 안드로이드 - 리소스 (1) (0) | 2012.05.07 |
[안드로이드] 안드로이드 - 리소스 (2) (0) | 2012.05.07 |
[안드로이드/Android] 안드로이드 권한(Permission) 종류 (3) | 2012.05.04 |
[번역] 안드로이드 Android and Security (0) | 2012.05.03 |
[링크 스크랩] [번역] 안드로이드 Android Security Overview (0) | 2012.05.03 |
[링크스크랩] [번역] 안드로이드 System and Kernel Level Security (0) | 2012.05.03 |
[링크 스크랩] 안드로이드 Android Application Security -2- (0) | 2012.05.03 |
[링크 스크랩] 안드로이드 Android Application Security -1- (0) | 2012.05.03 |