Android-Android中对外部事件的处理

Android-Android中对外部事件的处理

清晨说ぺ晚安 发布于 2016-10-18 字数 750 浏览 1159 回复 3

我想处理来电和挂断电话的监听
就是当用户玩游戏的时候突然来电了, 就把声音关闭, 挂断电话后再把声音开启;
但是测试了下效果, 尽然没有起到作用, 有心人帮助相我下唉;
代码如下:
1.在Activity中的OnCreate方法中添加

//  setContentView(R.layout.main);    
//电话状态Listener
MyPhoneStateListener myPhoneStateListener = new MyPhoneStateListener();
//取得TelephonyManager
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(this.TELEPHONY_SERVICE);
//将电话状态的Listener加到取得TelephonyManager
telephonyManager.listen(myPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜无邪 2017-07-07 3 楼

你用的是什么来播放音乐的?mediaPlayer 还是soundPool? 做游戏看法 建议用soundPool

泛泛之交 2017-05-30 2 楼

对外部来电的消息可以采用BroadcastReceiver去监听:

 <action android:name="android.intent.action.PHONE_STATE"/>

然后在BroadcastReceiver的onReceiver中:

 public void onReceive(final Context context, Intent intent) {
String phone_state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (phone_state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
AudioManager audiomanage = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
audiomanage.setRingerMode(AudioManager.RINGER_MODE_SILENT);
} else if (phone_state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
//recovery
}

想挽留 2017-02-06 1 楼

个人想法,我理解的其实你的本意应该是,当你的程序不在和用户交互的时候,你就去关闭声音,当用户和你交换的时候这个时候你才需要开启声音。
你上面的应该监听可能是一种方法,但是根据activity生命周期的方法的回调, 你可以在onStop() ,当你的程序完全不跟用户交互的时候去,关闭声音,相对的你可以在 onRestart 或者 在 onResume 里面去做声音,开的处理。
游戏→拨号程序→游戏。 你上诉描述的是这样一个过程,所以我想应该是我理解的那样。