Ich versuche, eine MP3-Wiedergabe zu unterbrechen und fortzusetzen, indem ich einen MediaPlayer im Hintergrund mit AsyncTask spiele.Java android: Fehler beim Anhalten und Fortsetzen von MediaPlayer auf AsyncTask in Aktivität
Hier ist der Code Aktivität:
public class MainActivity extends Activity implements SensorEventListener
{
private MyGLSurfaceView mGLSurfaceView2;
private SensorManager mSensorManager;
private Sensor mAccelerometer;
private Sensor mGyro;
BackgroundSound mBackgroundSound = new BackgroundSound();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
this.mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
this.mGyro = mSensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE);
mGLSurfaceView2 = new MyGLSurfaceView(this);
setContentView(mGLSurfaceView2);
mBackgroundSound.execute();
}
@Override
protected void onResume()
{
super.onResume();
mSensorManager.registerListener(this, mAccelerometer, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, mGyro, SensorManager.SENSOR_DELAY_NORMAL);
if(mBackgroundSound.player != null)
if(mBackgroundSound.player.isPlaying()==false)
mBackgroundSound.player.start();
mGLSurfaceView2.onResume();
}
@Override
protected void onPause()
{
super.onPause();
mSensorManager.unregisterListener(this);
if(mBackgroundSound.player.isPlaying())
{
mBackgroundSound.player.pause();
}
mBackgroundSound.player.release();
// mBackgroundSound.cancel(true);
mGLSurfaceView2.onPause();
}
public class BackgroundSound extends AsyncTask<Void, Void, Void> {
MediaPlayer player;
@Override
protected Void doInBackground(Void... params) {
AssetFileDescriptor afd;
player = new MediaPlayer();
try {
afd = getAssets().openFd("2/sound.mp3");
if (afd != null) {
player.setDataSource(afd.getFileDescriptor());
player.prepare();
player.setLooping(true);
player.setVolume(1.0f, 1.0f);
//player.start();
} else {
Log.i("Error", "afd is null.");
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
}
logcat Fehler:
E/MediaPlayer: start called in state 1
E/MediaPlayer: error (-38, 0)
E/MediaPlayer: Error (-38,0)
Wenn ich die mBackgroundSound.execute();
zu onResume()
die mp3 beginnt zu spielen bewegen, aber die onResume()
nicht offensichtlich das zweite Mal ausgeführt wird (beim Fortsetzen der App).
ich helfen die folgenden Befehle in der richtigen Methode setzen müssen, damit sie richtig (MP3 Pausen, wenn APP minimiert wird und wieder oder neu gestartet wird, wenn APP wieder fortgesetzt) zu arbeiten:
mBackgroundSound.execute();
mBackgroundSound.cancel(true);
mBackgroundSound.player.start();
mBackgroundSound.player.pause();
mBackgroundSound.player.release();
Dank!