2012-10-11 3 views
0

Ive fait une application qui lit les médias d'une source en ligne en utilisant un mediaplayer, cela fonctionne sur mon téléphone qui fonctionne android 2.3.7 pain d'épice, mais quand j'essaie et exécutez-le sur un autre téléphone fonctionnant Android 4.0 il se bloque lorsque le bouton de lecture est pressé. J'ai cherché partout et juste ne peux pas trouver la solution au problème. Toute aide serait très appreciated.My code et les résultats du journal sont ci-dessous:Android MediaPlayer ne fonctionne pas sur sandwich android 4.0 glace

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ImageButton; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
import android.widget.TextView; 

@SuppressLint({ "UseValueOf", "UseValueOf" }) 
public class DisplayMessage5 extends Activity 
implements Runnable, OnClickListener, OnSeekBarChangeListener { 

    private ImageButton play; 
    private ImageButton pause; 
    private ImageButton stop; 
    private MediaPlayer mediaPlayer; 
    private SeekBar seekBar; 
    private TextView textViewSecs; 
    private TextView textViewTotal; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_display_message5); 
     play = (ImageButton)findViewById(R.id.play_button); 
     pause = (ImageButton)findViewById(R.id.pause_button); 
     stop = (ImageButton)findViewById(R.id.stop_button); 
     seekBar = (SeekBar)findViewById(R.id.seekBar1); 
     textViewSecs = (TextView)findViewById(R.id.progress_text_secs); 
     textViewTotal = (TextView)findViewById(R.id.progress_text_mins); 
     seekBar.setOnSeekBarChangeListener(this); 
     play.setOnClickListener(this); 
     pause.setOnClickListener(this); 
     stop.setOnClickListener(this); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_display_message5, menu); 
     return true; 
    } 


    @Override 
    public void run() { 
     int currentPosition= 0; 
     int total = mediaPlayer.getDuration(); 
     while (mediaPlayer!=null && currentPosition<total) { 
      try { 
       Thread.sleep(1000); 
       currentPosition= mediaPlayer.getCurrentPosition(); 
      } catch (InterruptedException e) { 
       return; 
      } catch (Exception e) { 
       return; 
      }    
      seekBar.setProgress(currentPosition); 
     } 

    } 

    public void onClick(View v) { 
     if (v.equals(play)) { 
      if (mediaPlayer != null && mediaPlayer.isPlaying()) return; 
      if(seekBar.getProgress() > 0) { 
       try { 
        mediaPlayer.prepareAsync(); 
       } catch (IllegalStateException e) { 
        e.printStackTrace(); 
       } 
       mediaPlayer.start(); 
       return; 
      } 
      Uri uri = Uri.parse("myurl"); 
      mediaPlayer = MediaPlayer.create(this, uri); 
      try { 
       mediaPlayer.prepareAsync(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } 
      mediaPlayer.start(); 
      seekBar.setProgress(0); 
      seekBar.setMax(mediaPlayer.getDuration()); 
      new Thread(this).start(); 
     } 

     if (pause.isPressed()) { 
      mediaPlayer.pause(); 
     } 

     if(stop.isPressed()){ 
      mediaPlayer.stop(); 
      mediaPlayer.reset(); 
     } 

    } 

    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, 
      boolean fromUser) { 
     int progressSecs = (progress/1000) % 60; 
     int progressMins = (progress/1000)/60; 
     int totalTime = mediaPlayer.getDuration(); 
     int totalSecs = (totalTime/1000) % 60; 
     int totalMins = ((totalTime/1000)/60) % 60; 
     int totalHours = totalTime/1000/60/60; 
     textViewSecs.setText(String.valueOf(String.format("%02d", progressMins)) + ":" + String.valueOf(String.format("%02d", progressSecs))); 
     textViewTotal.setText(String.valueOf(String.format("%02d", totalHours)) + ":" + String.valueOf(String.format("%02d", totalMins)) + ":" + String.valueOf(String.format("%02d", totalSecs))); 
     if(fromUser){ 
      mediaPlayer.seekTo(progress); 
     } 



    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekbar) { 


    } 



} 

journal

10-10 20:15:47.156: E/AndroidRuntime(15124): FATAL EXCEPTION: main 
10-10 20:15:47.156: E/AndroidRuntime(15124): java.lang.NullPointerException 
10-10 20:15:47.156: E/AndroidRuntime(15124): at com.marnis.na.shares.DisplayMessage5.onClick(DisplayMessage5.java:86) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at android.view.View.performClick(View.java:3511) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at android.view.View$PerformClick.run(View.java:14105) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at android.os.Handler.handleCallback(Handler.java:605) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at android.os.Looper.loop(Looper.java:137) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at android.app.ActivityThread.main(ActivityThread.java:4613) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at java.lang.reflect.Method.invokeNative(Native Method) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at java.lang.reflect.Method.invoke(Method.java:511) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
10-10 20:15:47.156: E/AndroidRuntime(15124): at dalvik.system.NativeStart.main(Native Method) 
10-10 20:15:48.119: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:48.176: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:48.686: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:48.686: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:49.186: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:49.186: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:49.686: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:49.686: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:50.186: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:50.186: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:50.686: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:50.686: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:51.196: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:51.196: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:51.696: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:51.696: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:52.196: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:52.196: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:52.696: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:52.696: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:53.198: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:53.198: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:53.706: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:53.706: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:54.206: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:54.206: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:54.706: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:54.706: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:55.206: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:55.216: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:55.706: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:55.716: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:56.207: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:56.216: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:56.706: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:56.706: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:57.206: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:57.206: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:15:57.706: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:15:57.706: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:16:47.626: I/dalvikvm(15124): threadid=3: reacting to signal 3 
10-10 20:16:47.666: I/dalvikvm(15124): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:20:47.226: I/Process(15124): Sending signal. PID: 15124 SIG: 9 
10-10 20:21:50.226: V/ActivityThread(15667): com.marnis.na.shares white listed for hwui 
10-10 20:21:50.536: D/libEGL(15667): loaded /system/lib/egl/libGLES_android.so 
10-10 20:21:50.576: D/libEGL(15667): loaded /system/lib/egl/libEGL_tegra.so 
10-10 20:21:50.626: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:50.657: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:21:50.746: D/libEGL(15667): loaded /system/lib/egl/libGLESv1_CM_tegra.so 
10-10 20:21:50.766: D/libEGL(15667): loaded /system/lib/egl/libGLESv2_tegra.so 
10-10 20:21:50.796: D/OpenGLRenderer(15667): Enabling debug mode 0 
10-10 20:21:53.796: D/OpenGLRenderer(15667): Flushing caches (mode 0) 
10-10 20:21:55.966: D/MediaPlayer(15667): Couldn't open file on client side, trying server side 
10-10 20:21:55.996: E/MediaPlayer(15667): Unable to to create media player 
10-10 20:21:56.026: D/MediaPlayer(15667): create failed: 
10-10 20:21:56.026: D/MediaPlayer(15667): java.io.IOException: setDataSource failed.: status=0x80000000 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.media.MediaPlayer._setDataSource(Native Method) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:844) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:806) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.media.MediaPlayer.setDataSource(MediaPlayer.java:761) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.media.MediaPlayer.create(MediaPlayer.java:695) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.media.MediaPlayer.create(MediaPlayer.java:676) 
10-10 20:21:56.026: D/MediaPlayer(15667): at com.marnis.na.shares.DisplayMessage4.onClick(DisplayMessage4.java:77) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.view.View.performClick(View.java:3511) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.view.View$PerformClick.run(View.java:14105) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.os.Handler.handleCallback(Handler.java:605) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.os.Looper.loop(Looper.java:137) 
10-10 20:21:56.026: D/MediaPlayer(15667): at android.app.ActivityThread.main(ActivityThread.java:4613) 
10-10 20:21:56.026: D/MediaPlayer(15667): at java.lang.reflect.Method.invokeNative(Native Method) 
10-10 20:21:56.026: D/MediaPlayer(15667): at java.lang.reflect.Method.invoke(Method.java:511) 
10-10 20:21:56.026: D/MediaPlayer(15667): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
10-10 20:21:56.026: D/MediaPlayer(15667): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
10-10 20:21:56.026: D/MediaPlayer(15667): at dalvik.system.NativeStart.main(Native Method) 
10-10 20:21:56.026: D/AndroidRuntime(15667): Shutting down VM 
10-10 20:21:56.026: W/dalvikvm(15667): threadid=1: thread exiting with uncaught exception (group=0x40a2f3f8) 
10-10 20:21:56.026: E/AndroidRuntime(15667): FATAL EXCEPTION: main 
10-10 20:21:56.026: E/AndroidRuntime(15667): java.lang.NullPointerException 
10-10 20:21:56.026: E/AndroidRuntime(15667): at com.marnis.na.shares.DisplayMessage4.onClick(DisplayMessage4.java:79) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at android.view.View.performClick(View.java:3511) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at android.view.View$PerformClick.run(View.java:14105) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at android.os.Handler.handleCallback(Handler.java:605) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at android.os.Handler.dispatchMessage(Handler.java:92) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at android.os.Looper.loop(Looper.java:137) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at android.app.ActivityThread.main(ActivityThread.java:4613) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at java.lang.reflect.Method.invokeNative(Native Method) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at java.lang.reflect.Method.invoke(Method.java:511) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556) 
10-10 20:21:56.026: E/AndroidRuntime(15667): at dalvik.system.NativeStart.main(Native Method) 
10-10 20:21:56.556: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:56.566: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:21:57.086: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:57.096: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:21:57.586: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:57.596: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:21:58.096: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:58.106: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:21:58.596: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:58.606: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:21:59.097: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:59.097: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:21:59.596: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:21:59.596: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:22:00.096: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:22:00.096: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:22:00.597: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:22:00.606: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:22:01.096: I/dalvikvm(15667): threadid=3: reacting to signal 3 
10-10 20:22:01.096: I/dalvikvm(15667): Wrote stack traces to '/data/anr/traces.txt' 
10-10 20:22:01.306: I/Process(15667): Sending signal. PID: 15667 SIG: 9 
+0

Quelle ligne est-ce dans votre programme? (ligne 86) 'à com.marnis.na.shares.DisplayMessage5.onClick (DisplayMessage5.java:86)' – Tim

+0

mediaPlayer.prepareAsync(); – Will

+0

il y a deux "mediaPlayer.prepareAsync();" lignes dans la ligne de méthode onClick() 86 est le deuxième. il semble être incapable de préparer le mediaplayer. Mais ce que je ne comprends pas, c'est pourquoi cela fonctionne sur mon téléphone fonctionnant 2.3.7 et pas sur 4.0. – Will

Répondre

2
if(seekBar.getProgress() > 0) { 
    try { 
     mediaPlayer.prepareAsync(); 
    } 
    catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } 
     mediaPlayer.start(); 
     return; 
} 

L'erreur se produit parce que vous essayez d'accéder à une méthode d'un objet nul (lecteur multimédia). Cela peut arriver dans le bloc IF, car la valeur par défaut de votre seekBar n'est pas 0. Dans ce cas, vous devez initialiser mediaPlayer dans la méthode onCreate mieux que dans onClick.

+0

Merci pour votre réponse, cela a résolu l'erreur, mais a créé un nouveau. – Will

Questions connexes