2016-01-11 2 views
0

App падает, когда гарнитура отключенаApp падает, когда гарнитура отключена - App (услуга) перезапускается

Я пытаюсь следующий код

 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 от фактического устройства

Я способен генерировать следующие ERRORLOG

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 
[email protected] 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) отключить проверку удаления гарнитуры, когда приложение скрыло

как может любой из вышеперечисленного может быть сделано

+0

Пожалуйста, разместите stacktrace/logcat. –

+0

К сожалению, нет способа проверить гарнитуру на эмуляторе, или есть ли какие-либо просьбы, пожалуйста, помогите мне в этом, тогда я смогу опубликовать logcat. Я тестирую устройство lenovo A7000. – 1234567

+0

обновил вопрос с помощью журнала ошибок, пожалуйста, проверьте и помогите, если это возможно. – 1234567

ответ

0

Что происходит, если у вас нет метода OnTaskRemoved() method.try, который удаляет этот метод. Было бы более полезно, если бы вы поместили log.which помощник, который вы используете?