2016-04-22 8 views
0

Ich bin ein Anfänger und ich begann mit dem Erstellen einer Radio-App, die viele Stationen hat, aber ich habe ein Problem.Schwierigkeitsgrad zwischen Absichten in Java (Android Studio)

Wenn ich "Play" für das Radio klicke, fängt es an zu spielen, dann komme ich zurück zu der vorherigen Aktivität (Senderliste) und wenn ich wieder zu demselben Radio komme und "Pause" drücke, wird es diffus " Nicht spielen". (Ich habe einen Toast gemacht, so dass, wenn ich "Pause" drücke, während das Radio nicht spielt, es diffundiert "Nicht spielen"), aber das Radio ist immer noch "Spielen". Hier

ist der Code für die 2-Tasten (Wiedergabe und Pause):

btnPlayMFM.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

     if (isOnline() == true) { 
      if (isPlaying() == false) { 

        Toast t = Toast.makeText(MosaiqueFM.this, "Loading \nPlease Wait", 10000); 
        t.show(); 

        try { 
         mediaPlayer.reset(); 
         mediaPlayer.setDataSource(stream_url); 
         mediaPlayer.prepareAsync(); 

         mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
          @Override 
          public void onPrepared(MediaPlayer mp) { 
           mp.start(); 
          } 
         }); 

        } catch (IOException e) { 
         e.printStackTrace(); 
        } 


       } else if (isPlaying() == true) { 
        Toast t2 = Toast.makeText(MosaiqueFM.this, "Playing", 2000); 
        t2.show(); 
       } 
      } 
      if (isOnline() == false){ 
       Toast t = Toast.makeText(MosaiqueFM.this, "Internet Connection Required", 3000); 
       t.show(); 
      } 
     } 

    }); 

    btnPauseMFM.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (isPlaying() == true) { 
       mediaPlayer.stop(); 
      } else if (isPlaying() == false){ 
       Toast t = Toast.makeText(MosaiqueFM.this, "Not Playing", 2000); 
       t.show(); 
      } 
     } 
    }); 

public boolean isPlaying() { 
    return(mediaPlayer != null && mediaPlayer.isPlaying()); 
} 

public boolean isOnline() { 
    cm = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE); 
    return cm.getActiveNetworkInfo() != null && cm.getActiveNetworkInfo().isConnectedOrConnecting(); 
} 
+0

Hallo, ich habe Ihre Frage bearbeitet, um sie lesbarer zu machen, und mir ist aufgefallen, dass Sie möglicherweise einen Fehler haben. Sie schließen den 'btnPlayMFM.setOnClickListener (' bevor Sie 'btnPauseMFM.setOnClickListener' abschließen, so dass Sie den Listener für die Pause-Schaltfläche in dem Bereich festlegen, in dem Sie den Listener für die Wiedergabe-Schaltfläche festgelegt haben. –

+0

Bitte lesen Sie auch [this Anleitung] (https://stackoverflow.com/help/how-to-ask) auf, wie man eine gute Frage stellt, wie es einige der notwendigen Details durchgehen wird, um eine Frage eine gute Frage zu stellen. Etwas, das ich bemerkte, war das Titel Ihrer Frage Es sieht so aus, als ob Ihr Titel Ihre Frage nicht erklärt, sondern erklärt, warum Sie Ihre Frage gepostet haben Stellen Sie sicher, dass Ihre Titel so detailliert wie möglich zu Ihrer spezifischen Frage oder Ihrem Problem sind. –

Antwort

1

Wenn Sie zwei Aktivitäten haben - eine weitere zeigt Senderliste und eine andere für Wiedergabe/Pause, um einen bestimmten Radiosender dann offenbar, wenn Sie Verlasse die zweite Aktivität, deine Aktivität wird zerstört und mediaPlayer wird null und so, wenn du wiederkommst, wird isPlaying() falsch sein. Und das ist, warum Sie diese Toast bekommen -

Toast t = Toast.makeText(MosaiqueFM.this, "Not Playing", 2000); 

Anregung - Für diese Art von Anwendungen, Sie wollen nicht, das Radio zu stoppen, wenn der Benutzer die App verlässt. Also schlage ich vor, dass Sie den Service zum Spielen nutzen.