MediaPlayer 在打开另一个应用程序后停止在后台播放
MediaPlayer stop playing on background after open another app
我有一个简单的 android 应用程序。我想继续在后台播放我的歌曲,所以我的主页按钮不会停止播放音乐。到目前为止,我的歌曲播放得很好,但是例如,如果我打开 google chrome 浏览器,它总是会停止。 android 似乎对我的应用程序做了一些事情并停止工作。任何想法?
我的 MainActivity 是:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent si = new Intent(this, MediaPlayerService.class);
si.setAction(MediaPlayerService.ACTION_PLAY);
startService(si);
}
我的服务是:
public class MediaPlayerService extends Service {
private static final String TAG = "MediaPlayerService";
public static final String ACTION_PLAY =
"com.example.action.PLAY";
private MediaPlayer mMediaPlayer;
private String source;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand");
if (intent.getAction().equals(ACTION_PLAY)) {
Log.d(TAG, "enter if: onStartCommand");
mMediaPlayer = MediaPlayer.create(this, R.raw.one_small_step);
Runnable r = new Runnable() {
public void run() {
mMediaPlayer.setLooping(true);
mMediaPlayer.setVolume(100,100);
mMediaPlayer.start();
}
};
Thread t = new Thread(r);
t.start();
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
Log.d(TAG, "onDestroy");
mMediaPlayer.stop();
}
public IBinder onBind(Intent intent) {
return null;
}
我的清单文件:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="com.example.testmediaplayer.MediaPlayerService" >
</service>
</application>
您的服务需要使用通知,这样它就不会在您离开应用后被销毁。
也许this tutorial对你有帮助。
好的。这似乎与 Moto G
的内存管理非常糟糕有关
http://forum.xda-developers.com/moto-g-2014/help/music-playback-stopped-multitasking-t2905460
他们真丢脸:(
我会把它放在最后。
我有一个简单的 android 应用程序。我想继续在后台播放我的歌曲,所以我的主页按钮不会停止播放音乐。到目前为止,我的歌曲播放得很好,但是例如,如果我打开 google chrome 浏览器,它总是会停止。 android 似乎对我的应用程序做了一些事情并停止工作。任何想法?
我的 MainActivity 是:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent si = new Intent(this, MediaPlayerService.class);
si.setAction(MediaPlayerService.ACTION_PLAY);
startService(si);
}
我的服务是:
public class MediaPlayerService extends Service {
private static final String TAG = "MediaPlayerService";
public static final String ACTION_PLAY =
"com.example.action.PLAY";
private MediaPlayer mMediaPlayer;
private String source;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.d(TAG, "onStartCommand");
if (intent.getAction().equals(ACTION_PLAY)) {
Log.d(TAG, "enter if: onStartCommand");
mMediaPlayer = MediaPlayer.create(this, R.raw.one_small_step);
Runnable r = new Runnable() {
public void run() {
mMediaPlayer.setLooping(true);
mMediaPlayer.setVolume(100,100);
mMediaPlayer.start();
}
};
Thread t = new Thread(r);
t.start();
}
return START_NOT_STICKY;
}
@Override
public void onDestroy() {
Log.d(TAG, "onDestroy");
mMediaPlayer.stop();
}
public IBinder onBind(Intent intent) {
return null;
}
我的清单文件:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="com.example.testmediaplayer.MediaPlayerService" >
</service>
</application>
您的服务需要使用通知,这样它就不会在您离开应用后被销毁。
也许this tutorial对你有帮助。
好的。这似乎与 Moto G
的内存管理非常糟糕有关http://forum.xda-developers.com/moto-g-2014/help/music-playback-stopped-multitasking-t2905460
他们真丢脸:(
我会把它放在最后。