2015-08-03 3 views
0

Я программирую медиаплеер с андроид-студией. Он имеет 3 варианта: 1.play 2.stop 3.pause ... игра и остановка работают. Но когда я нажимаю на паузу, это не работает, и после этого остановка не работает и музыка непрерывно воспроизводится! это код на MainActivity:программирование медиаплеера, но пауза не работает

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button b1= (Button) findViewById(R.id.play); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(MainActivity.this,PlayAndPause.class); 
      startService(i); 
      a=1; 
     } 
    }); 
    Button b2 = (Button) findViewById(R.id.stop); 
    b2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i= new Intent(MainActivity.this,PlayAndPause.class); 
      stopService(i); 
     } 
    }); 
    Button b3= (Button) findViewById(R.id.pause); 
    b3.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent i = new Intent(MainActivity.this,PlayAndPause.class); 
      startService(i); 
      a=2; 
     } 
    }); 
} 

и это услуга PlayandPause:

public class PlayAndPause extends Service { 
MediaPlayer mp; 
@Override 
public void onStart(Intent intent, int startId) { 
    super.onStart(intent, startId); 
    mp=MediaPlayer.create(this,R.raw.s); 
    if(MainActivity.a==1) 
     mp.start(); 
    if(MainActivity.a==2) { 
     mp.pause(); 
    } 
} 

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

, пожалуйста, помогите! Благодарю.

ответ

0

Первый
Вы должны изменить MediaPlayer инициализацию вашего MainActivity или Service.onCreate() события.

Изменение этой линии проблема:

mp=MediaPlayer.create(this,R.raw.s); 

Для pause()MediaPlayer год к году должен использовать тот же экземпляр, что ваш start() так держать ссылку.

Второе:
Как я могу видеть, ваше приложение должно приостановить музыку, если нажать кнопку паузы дважды, чек в годовом исчислении в вашем PlayAndPause классе a переменной MainActivity так, вы должны изменить a переменного флага перед вызовом цель:

b3.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     a=2; // here!!! 
     Intent i = new Intent(MainActivity.this,PlayAndPause.class); 
     startService(i); 
    } 
}); 

Также в вашем кнопку воспроизведения, что нужно работать, потому что вы инициализировать a=1 где-то.

b1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     a=1; // here!!! 
     Intent i = new Intent(MainActivity.this,PlayAndPause.class); 
     startService(i); 
    } 
}); 

Кроме того, проще и яснее, вы можете put an extra String to your intent, например, после объявления о намерении:

i.putExtra("ACTION", "PAUSE"); 

Затем, чтобы получить данные:

Bundle extras = getIntent().getExtras(); 
String action = extras.getString("ACTION") 
+0

спасибо за ответы. Но это не работает! :( – dashsiamak

+0

Uhmmm ... Я вижу ... это потому, что вы инициализируете 'MediaPlayer' каждый раз, когда вы вызываете службу ... и вы должны использовать один и тот же экземпляр все время !!! put' mp = MediaPlayer.create (это, R.raw.s); 'в' onCreate() 'службы или объявить и инициализировать его в MainActivity и' pause() 'или' play() 'в службе –

+0

Сначала я использовал посылку, но у нее есть ошибка на получение намерения: не могу решить метод 'getintent()' – dashsiamak

Смежные вопросы