Решением моей проблемы было создание MediaPlayer
в качестве услуги. Я создал новый класс Java для расширения класса обслуживания. Вот код для этого:
public class RingtoneService extends Service {
private MediaPlayer mp;
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mp = MediaPlayer.create(this, Settings.System.DEFAULT_RINGTONE_URI);
mp.setLooping(true);
mp.start();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
mp.stop();
}
}
Затем я обновил свой класс MainActivity следующим кодом:
CallLukas.setOnClickListener(this);
Incoming.setOnClickListener(this);
@Override
public void onClick(View v) {
if (v == CallLukas){
startService(new Intent(this, RingtoneService.class));
}else if (v == Incoming) {
stopService(new Intent(this, RingtoneService.class));
}
}
Код в основном устанавливает OnClickListener на мои кнопки и запускает службу если щелкнуть один из них и остановить службу, если щелкнуть другой.
Последние шаги заключаются в добавлении новой созданной службы в файл AndroidManifest. Его необходимо добавить внутрь тега <application>
.
<application
<service android:name=".RingtoneService"></service>
</application>
Полную инструкцию по реализации этого можно найти здесь: https://www.youtube.com/watch?v=p2ffzsCqrs8&t=315s