필자는 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
프로그램의 라인은 무엇입니까? (줄 86)'com.marnis.na.shares.DisplayMessage5.onClick (DisplayMessage5.java:86)' – Tim
mediaPlayer.prepareAsync(); – Will
두 개의 "mediaPlayer.prepareAsync();"가 있습니다. onClick() 메소드 행 86의 행은 두 번째 행입니다. 미디어 플레이어를 준비 할 수없는 것 같습니다. 그러나 내가 이해할 수없는 것은 그것이 2.3.7을 실행하고 4.0이 아닌 내 휴대 전화에서 작동하는 이유입니다. – Will