我正在设置重复提醒(声音),直到用户停止它为止。因为这必须在锁定状态下进行,所以我决定在后台使用服务。
在MainActivity
中,我通过以下方式启动和停止服务
startService(new Intent(MainActivity.this, MyService.class));
或
stopService(new Intent(MainActivity.this, MyService.class));
通过按不同的按钮-确保不要停止或启动两次。
我直接在软件电话上尝试编码,并在Android 28上通过USB尝试-一切正常,在锁定,解锁,前景,背景都可以!但是,一旦我将其发布到商店并从那里安装后,声音就不会播放。
import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.CountDownTimer;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
public class MyService extends Service {
MediaPlayer mediaPlayer;
CountDownTimer mCountDownTimer;
private Timer timer = new Timer();
public IBinder onBind(Intent arg0)
{
return null;
}
public void onCreate()
{
super.onCreate();
startService();
}
private void startService()
{
timer.scheduleAtFixedRate(new mainTask(), 0, 15000);
}
private class mainTask extends TimerTask
{
public void run()
{
try {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
mediaPlayer.release();
}
} catch(Exception e) { e.printStackTrace(); }
mediaPlayer = MediaPlayer.create(MyService.this, R.raw.somesound);
mediaPlayer.setLooping(false); // Set looping
mediaPlayer.start();
}
}
public void stopService() {
}
public void onDestroy()
{
super.onDestroy();
timer.cancel();
timer.purge();
Toast.makeText(this, "service stopped", Toast.LENGTH_SHORT).show();
}
我希望能获得直接安装与商店安装所复制的相同功能。我不知道从哪里开始。
第二,我想了解为什么该服务无法在“商店”版本中产生声音,以及如何使它做到这一点。
谢谢。