私は音を早く止めることについての投稿をたくさん見ました。これは私の問題ではありません。私の問題はこれです...私はこれらの25の音を立てて働いています。電話が揺れていると、話す、テキストを表示する、アニメーションがあるので、話しているように見えます。最初はうまく動作します。クライアントが見つけた問題を再現できる唯一の方法は、何度もそれを振ってからクリックすることです。それに振り戻して何度も揺さぶってから、もう一度やり直してください。私が数回それを振り戻すと、それは突然すべての音が切れる。ときには、1つは動作しますが、通常は戻って戻ってくると、通常はすべての音が止まります。それ以外のものはすべて機能します。誰もこれの前に遭遇しましたか?どんな助けもありがとう。Android搭載のMedia Playerはすべて音を止めています
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()」で始まるように初期化するだけです。その後、データソースを受け入れる状態になります。私は非常に次のリンクを読むことを強くお勧めします。あなたが本当に理解できれば、あなたが遭遇しているすべての問題は、もっとあなたにとって意味があるでしょう:http://developer.android.com/reference/android/media/MediaPlayer.html#StateDiagram – kcoppock