耳机断开时应用程序崩溃 - 应用程序(服务)重新启动

时间:2016-01-11 11:51:17

标签: android broadcastreceiver headset

断开耳机时应用程序崩溃

我正在尝试关注代码

     private int headsetSwitch = 1; 
     registerReceiver(headsetReciever, new IntentFilter(
             Intent.ACTION_HEADSET_PLUG));

public BroadcastReceiver headsetReciever = new BroadcastReceiver() {
    public boolean headsetconnected = false;

     public void onReceive(Context context, Intent intent) {

     if (intent.hasExtra("state")) {
     if (headsetconnected && intent.getIntExtra("state", 0) == 0) {
     headsetconnected = false;
     Toast.makeText(getApplicationContext(), "headsetconnected = false",
                Toast.LENGTH_SHORT).show();
     headsetSwitch = 0;
     }

     else if (!headsetconnected
     && intent.getIntExtra("state", 0) == 1) {
     headsetconnected = true;
     Toast.makeText(getApplicationContext(), "headsetconnected = true",
                Toast.LENGTH_SHORT).show();
     headsetSwitch = 1;
     // Lockscreencontrol();
     }

     }

     switch (headsetSwitch) {
     case (0):
     headsetDisconnected();
     break;
     case (1):
     break;
     }
     }

     };

     private void headsetDisconnected() {
     try {
    if(mMediaplayer.isplaying()) 
      mMediaplayer.pause();

      }


     } catch (Exception e) {
     // TODO: handle exception
     }

     }

如果我的应用程序正在运行(这是最小化的或我们目前正在查看来自应用程序的某些活动),上面的代码工作得非常好,现在当我断开耳机时,媒体播放器会暂停,这是预期的结果。

该应用基于服务。

现在,当我轻扫应用程序时,服务正在后台运行,当我断开耳机时,应用程序崩溃了。

为了检测应用程序已被刷掉我尝试取消注册广播接收器但仍然应用程序崩溃

使用以下代码

关闭了用于检测该应用的代码
public void onTaskRemoved(Intent rootIntent) {
            unregisterReceiver(headsetReciever);

    }

不幸的是我没有任何日志可以分享任何帮助会很棒。

----------------更新-------------

能够从实际设备生成logcat

我能够生成以下错误日志

E/MUSIC PLAYER( 4110): castconnected:false mApiClientnull mRemoteMediaPlayernull

,更具体地说是

E/AndroidRuntime( 4183): FATAL EXCEPTION: main
E/AndroidRuntime( 4183): java.lang.RuntimeException: Unable to start service com
.musicplayer.mp3player.PlayService@41741a10 with null: java.lang.NullPointerExce
ption
 E/AndroidRuntime( 4183): Caused by: java.lang.NullPointerException
E/AndroidRuntime( 4183): at .PlayService.onStart
Command(PlayService.java:233)

现在我有两个选择

1)停止重启服务 2)在轻扫应用程序时禁用耳机移除检查

如何才能完成上述任何一项

1 个答案:

答案 0 :(得分:0)

当你没有OnTaskRemoved()方法时删除这个方法会发生什么。如果你把log.which助手用在哪个会更有帮助?