2015年5月21日 星期四

來電事件處理

以mp3Player為例:

先在AndroidMainfest裡設定攔截號碼權限:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Activity:

public class MainActivity extends Activity {

private boolean isCellPlay;

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playlist);
.
.
.


//偵聽來電事件
TelephonyManager phoneyMana = (TelephonyManager)

getSystemService(this.TELEPHONY_SERVICE);

phoneyMana.listen(new myPhoneStateListener(),PhoneStateListener.LISTEN_CALL_STATE);

}


/* 來電事件處理 */
private class myPhoneStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING://來電時,要處理的動作
if (mediaplayer.isPlaying()) {

mediaplayer.pause(); //音樂暫停
isCellPlay = true;//標記來電時暫停

}
break;
case TelephonyManager.CALL_STATE_IDLE://掛斷電話時要處理的動作
if (isCellPlay) {
isCellPlay = false;
mediaplayer.start(); //音樂繼續播放
}
break;
}
}
}