медиаплеер останавливает музыку, когда нажата кнопка homebutton или экран выключается .... Я хочу, чтобы музыка продолжалась, даже если активность теряет фокус. ... но я хочу, чтобы музыка паузы для входящих вызовов, и если пользователь прерывает музыку .... и музыка должна остановиться, когда активность закрывается с помощью кнопки возвратаMedia Player останавливает музыку, когда активность теряет фокус (когда дома или экране отключается)
вот пример моего кода:
package com.example.acer.aartisangrah;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.text.Html;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
public class ekdanta extends AppCompatActivity implements Runnable, View.OnClickListener,SeekBar.OnSeekBarChangeListener {
TextView tv4;
Button b9, b10,but19;
int count = 0;
MediaPlayer play;
SeekBar seek_bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ekdanta);
tv4 = (TextView) findViewById(R.id.textView9);
tv4.setTextSize(18);
tv4.setText(Html.fromHtml(getString(R.string.thirteen)));
b9 = (Button) findViewById(R.id.b9);
b10 = (Button) findViewById(R.id.b10);
seek_bar = (SeekBar) findViewById(R.id.seekBar);
seek_bar.setOnSeekBarChangeListener(this);
seek_bar.setEnabled(false);
but19 = (Button) findViewById(R.id.button19);
but19.setOnClickListener(this);
TelephonyManager mTelephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
mTelephonyManager.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}
private final PhoneStateListener mPhoneListener=new PhoneStateListener(){
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
// Call receive state
if (state != TelephonyManager.CALL_STATE_IDLE) {
if ((play!= null) && (play.isPlaying()))
{
play.pause();
but19.setBackgroundResource(R.drawable.play);
}
}
}
};
public void run() {
int currentPosition = play.getCurrentPosition();
final int total = play.getDuration();
while (play != null && currentPosition < total) {
try {
Thread.sleep(1000);
currentPosition = play.getCurrentPosition();
} catch (InterruptedException e) {
return;
} catch (Exception e) {
return;
}
seek_bar.setProgress(currentPosition);
}
}
public void onClick(View v) {
if (v.equals(but19)) {
if (play == null) {
play = MediaPlayer.create(getApplicationContext(), R.raw.ekadanta);
seek_bar.setEnabled(true);
}
if (play.isPlaying()) {
play.pause();
but19.setBackgroundResource(R.drawable.play);
} else {
play.start();
but19.setBackgroundResource(R.drawable.pause);
seek_bar.setMax(play.getDuration());
new Thread(this).start();
}
}
play.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
play.seekTo(0);
but19.setBackgroundResource(R.drawable.play);
}
});
}
@Override
protected void onPause()
{
super.onPause();
}
@Override
protected void onDestroy()
{
super.onDestroy();
play.release();
}
@Override
public void onProgressChanged(SeekBar seek_bar, int progress, boolean fromUser) {
try{
if(play.isPlaying()||play!=null){
if (fromUser)
play.seekTo(progress);
}
else if(play==null){
Toast.makeText(getApplicationContext(),"First Play", Toast.LENGTH_SHORT).show();
seek_bar.setProgress(0);
}
}
catch(Exception e){
Log.e("seek bar",""+e);
seek_bar.setEnabled(false);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
public void increase(View inc) {
count++;
if (count == 1) {
tv4.setTextSize(22);
} else if (count == 2) {
tv4.setTextSize(30);
} else if (count >= 3) {
count = 3;
tv4.setTextSize(40);
}
}
public void decrease(View dec) {
count--;
if (count <= 0) {
tv4.setTextSize(18);
count = 0;
}
if (count == 1) {
tv4.setTextSize(22);
} else if (count == 2) {
tv4.setTextSize(30);
} else if (count == 3) {
tv4.setTextSize(40);
}
}
}
EDIT
После использования этого кода для активности ... эта активность не открывается на некоторых устройствах ... приложение просто закрывается .... Пожалуйста, помогите !!! Другие виды деятельности без этого кода работают просто отлично ...
Это работает так, как я хотел, но проблема в том, что музыка воспроизводится в фоновом режиме, и пользователь открывает приложение из запуска, которое приложение перезапускает, и при нажатии воспроизведения начинается воспроизведение новой музыки (эта проблема не возникает, если приложение открывается из последних приложений) – Devk
@ Devk Хорошо .. музыка просто начинается с самого начала или музыка воспроизводит музыку, которая ранее воспроизводилась [вместе с ней]? – Shaishav
Музыка играет поверх предыдущей пьесы – Devk