媒体播放器停止了。即使应用程序被杀,我也需要运行它

时间:2018-03-29 05:00:32

标签: android service background android-mediaplayer

使用服务来实现问题目的。

代码:

内部清单:

<service
        android:name=".MyService"
        android:enabled="true" />

服务类:

public class MyService extends Service {

private MediaPlayer media;

@Nullable
@Override
public IBinder onBind(Intent intent) {
    return null;
}


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    media = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
    media.setLooping(true);
    media.start();
    return START_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
    media.stop();
}

我的Java课程:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void startMethod(View v) {
    startService(new Intent(this, MyService.class));
}

public void stopMethod(View v) {
    stopService(new Intent(this, MyService.class));
}

所以,问题是,当我杀死应用程序时,媒体播放器会停止播放音乐或我的默认铃声。因为,我使用START_STICKY,它应该在后台运行。

可能是什么问题?即使在Android中使用服务杀死了应用程序,我也需要播放音乐。如果出现问题,请指导。感谢。

修改

上述问题适用于较低版本的设备。对于更高版本,我们可以使用JobService。

现在,问题是如果我想检查后台服务中的具体时间,并且在特定时间我必须显示Toast消息。到目前为止,我已经在onStartCommand()方法中完成了它,并将时间与.equals方法进行了比较。但是,我认为还有另一种方法可以做到这一点。

我在onStartCommand()中的代码:

if(currentTime.equals("Thu Mar 29 06:18:00 GMT 2018")){
        Toast.makeText(this, ""+currentTime, Toast.LENGTH_SHORT).show();
    }
    if(currentTime.equals("Thu Mar 29 06:20:00 GMT 2018")){
        Toast.makeText(this, ""+currentTime, Toast.LENGTH_SHORT).show();
    }
    if(currentTime.equals("Thu Mar 29 06:21:00 GMT 2018")){
        Toast.makeText(this, ""+currentTime, Toast.LENGTH_SHORT).show();
    }

Toast在这些特定时间不显示。因为它仅在onStartCommand()方法调用时显示。那么,我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

如果这适用于较低版本的Android设备,那么您可以尝试使用JobService来获得更高版本的Android设备。

按照以下链接&amp;在JobScheduling成为职业选手:

https://github.com/evernote/android-job

https://github.com/firebase/firebase-jobdispatcher-android http://blog.teamtreehouse.com/scheduling-work-jobscheduler

https://blog.klinkerapps.com/android-o-background-services/