我已經看到很多關於它停止聲音的帖子。這不是我的問題。我的問題是這個......我有這25個聲音起作用。當電話被振動時,它會說話,顯示文本,並有一個動畫,讓人看起來像他在說話。它起初工作得很好。我能夠重現我的客戶發現的問題的唯一方法就是多次搖動,然後點擊返回。重新振作並震動無數次,然後再次點擊。當我再次震動它幾次後,突然所有的聲音都被切斷了。偶爾有人會工作,但如果再回來,通常會停止發聲。其他所有功能都應該如此。任何人都遇到過這個?任何幫助,將不勝感激。Android上的媒體播放器全部停止聲音
public class Ask extends Activity{
private SensorManager mSensorManager;
private ShakeEventListener mSensorListener;
String[] answer;
int possibleAnswers, randomAnswer, talkRun=0, last=-1;
int shake0;
long lastClick;
private MediaPlayer mp, sound0;
Context context;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ask);
Intent type = getIntent();
lastClick = type.getLongExtra("lastClick", 0);
context=this;
final Random generator = new Random();
possibleAnswers = 1;
answer = new String[possibleAnswers];
answer[0]="***Coughing***";
//Sounds
setVolumeControlStream(AudioManager.STREAM_MUSIC);
mp = MediaPlayer.create(this, R.raw.askbud);
mp.start();
mSensorListener = new ShakeEventListener();
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensorManager.registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_UI);
final TextView tv = (TextView)findViewById(R.id.answer);
mSensorListener.setOnShakeListener(new ShakeEventListener.OnShakeListener() {
public void onShake() {
if (System.currentTimeMillis() - lastClick > 900) {
lastClick = System.currentTimeMillis();
randomAnswer = generator.nextInt(possibleAnswers);
if(last==randomAnswer)
randomAnswer = generator.nextInt(possibleAnswers);
animation();
if(randomAnswer==0){
if(shake0>=1){
sound0.reset();
}
shake0++;
sound0 = MediaPlayer.create(context, R.raw.coughing);
try {
sound0.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sound0.start();
}
});
}
@Override
protected void onResume() {
super.onResume();
mSensorManager.registerListener(mSensorListener,
mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER),
SensorManager.SENSOR_DELAY_UI);
}
@Override
protected void onStop() {
mSensorManager.unregisterListener(mSensorListener);
super.onStop();
}
}
只是微微除了問題。在我聽到沒有聲音發生後,即使應用程序關閉並重新打開後,它仍會繼續發生。
感謝您花時間做到這一點。我會給它一個鏡頭。 – steven
我一定做錯了什麼。我在每個if(randomAnswer ==)部分中輸入了這些內容,但沒有發生任何聲音。它一定是我初始化mp的方式。它的初始化方式仍然在上面。我應該如何進行初始化?對MediaPlayer不太瞭解。謝謝您的幫助。 – steven
剛剛初始化一個以'MediaPlayer mp = new MediaPlayer()'開頭。它應該處於接受數據源的狀態。我極力推薦THOROUGHLY閱讀以下鏈接。如果你真的能夠理解這一點,那麼你遇到的所有問題都將對你更有意義:http://developer.android.com/reference/android/media/MediaPlayer.html#StateDiagram – kcoppock