Android - o ícone do discador é colocado em aplicativos usados ​​recentemente após terminar ()

StackOverflow https://stackoverflow.com/questions/2201460

Pergunta

No meu aplicativo, detecto a chamada efetuada quando uma chamada é discada do discador ou dos contatos.

Isso funciona bem e, em seguida, abro uma caixa de diálogo dizendo que detectei a chamada e, em seguida, o usuário pressiona um botão para fechar a caixa de diálogo que chama finish() nessa atividade.

Tudo funciona bem, exceto que quando pressiono a tecla Home para abrir os aplicativos usados ​​recentemente, o ícone do discador está lá.

E quando ele é clicado, a caixa de diálogo volta ao foco em primeiro plano, quando a atividade da caixa de diálogo deveria estar morta e não poder ser trazida de volta ao primeiro plano.

Aqui está uma imagem do que quero dizer.

Erro de discador http://img515.imageshack.us/img515/8505/devicev.png

Então surgem duas questões: por que o ícone do discador seria colocado ali e por que ele estaria trazendo minha atividade para primeiro plano?

Aqui está o código dessa atividade que tem um tema de diálogo:

 public class CallDialogActivity extends Activity{

 boolean isRecording;
 AudioManager audio_service;

 public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.dialog);
      audio_service = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
      getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);



      Bundle b = this.getIntent().getExtras();
      String number = b.getString("com.networks.NUMBER"); 
      String name = b.getString("com.networks.NAME"); 

      TextView tv = (TextView) findViewById(R.id.voip) ;
      tv.setText(name);

      Intent service = new Intent(CallAudio.CICERO_CALL_SERVICE);
         startService(service);

      final Button stop_Call_Button = (Button) findViewById(R.id.widget35);


      this.setVolumeControlStream(AudioManager.STREAM_VOICE_CALL);


        stop_Call_Button.setOnClickListener(new View.OnClickListener(){
  public void onClick(View v){


   Intent service = new Intent(CallAudio._CALL_SERVICE);

   //this is for Android 1.5 (sets speaker going for a few seconds before shutting down)


   stopService(service);
   Intent setIntent = new Intent(Intent.ACTION_MAIN);
         setIntent.addCategory(Intent.CATEGORY_HOME);
   setIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   startActivity(setIntent); 
          finish();
             isRecording = false;

   }

 });

        final Button speaker_Button = (Button) findViewById(R.id.widget36);

         speaker_Button.setOnClickListener(new View.OnClickListener(){
       public void onClick(View v){

        if(true){
         audio_service.setSpeakerphoneOn(false);
        }
        else{
         audio_service.setSpeakerphoneOn(true);
        }

       }

      });

}

@Override Protected void onResume () {super.onResume ();

  }

  @Override
  protected void onPause() {

      super.onPause();
  }

  public void onCofigurationChanged(Configuration newConfig) { 

   super.onConfigurationChanged(newConfig); 

   }

}

Ele chama um serviço que usa AudioRecord para gravar do microfone e AudioTrack para reproduzi-lo no fone de ouvido, nada no serviço a ver com o discador.

Alguém tem alguma ideia de por que isso pode estar acontecendo?

Foi útil?

Solução 2

Depois de algumas pesquisas, parece que a implementação do discador da HTC contém alguns bugs, o ícone do discador nunca deve aparecer, pois o telefone deve substituí-lo.

Outras dicas

O menu de aplicativos usados ​​recentemente não se importa se o aplicativo foi concluído.Ele apenas reinicia se for o caso.Ele mostra coisas que foram usadas recentemente, não coisas que estão em execução no momento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top