2012-10-11 2 views
0

필자는 mediaplayer를 사용하여 온라인 소스에서 미디어를 재생하는 응용 프로그램을 만들었고, 그것은 안드로이드 2.3.7 진저 브레드를 실행하는 내 휴대폰에서 작동하지만, 내가하려고하면 안드로이드 4.0을 실행하는 다른 휴대 전화에서 실행하십시오. 재생 버튼을 누르면 충돌이 발생합니다. 나는 사방을 수색 해 왔으며 그 문제에 대한 해결책을 찾지 못했습니다.안드로이드 MediaPlayer 안드로이드 4.0 아이스크림 샌드위치에서 작동하지 않습니다

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) { 


    } 



} 

로그는 null 객체의 메소드를 액세스하려고하기 때문에

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

프로그램의 라인은 무엇입니까? (줄 86)'com.marnis.na.shares.DisplayMessage5.onClick (DisplayMessage5.java:86)' – Tim

+0

mediaPlayer.prepareAsync(); – Will

+0

두 개의 "mediaPlayer.prepareAsync();"가 있습니다. onClick() 메소드 행 86의 행은 두 번째 행입니다. 미디어 플레이어를 준비 할 수없는 것 같습니다. 그러나 내가 이해할 수없는 것은 그것이 2.3.7을 실행하고 4.0이 아닌 내 휴대 전화에서 작동하는 이유입니다. – Will

답변

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

오류가 발생합니다 : 어떤 도움을 아주 많이 appreciated.My 코드와 로그의 결과가 될 것이다 다음과 같습니다 (미디어 플레이어). seekBar의 기본값이 0이 아니기 때문에 IF 블록에서 발생할 수 있습니다.이 경우 onClick보다 onCreate 메서드에서 mediaPlayer를 더 잘 초기화해야합니다.

+0

답해 주셔서 감사합니다. 오류가 해결되었지만 새 오류가 작성되었습니다. – Will

관련 문제