Android-Android中对外部事件的处理
我想处理来电和挂断电话的监听
就是当用户玩游戏的时候突然来电了, 就把声音关闭, 挂断电话后再把声音开启;
但是测试了下效果, 尽然没有起到作用, 有心人帮助相我下唉;
代码如下:
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);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
你用的是什么来播放音乐的?mediaPlayer 还是soundPool? 做游戏看法 建议用soundPool
对外部来电的消息可以采用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
}
个人想法,我理解的其实你的本意应该是,当你的程序不在和用户交互的时候,你就去关闭声音,当用户和你交换的时候这个时候你才需要开启声音。
你上面的应该监听可能是一种方法,但是根据activity生命周期的方法的回调, 你可以在onStop() ,当你的程序完全不跟用户交互的时候去,关闭声音,相对的你可以在 onRestart 或者 在 onResume 里面去做声音,开的处理。
游戏→拨号程序→游戏。 你上诉描述的是这样一个过程,所以我想应该是我理解的那样。