我有一个频率很高的“点击”,但是在点击20-25之后,声音消失了。
MediaPlayer mp;
mp = MediaPlayer.create(mService.getApplicationContext(),R.raw.click2);
mp.start();
}
ANdroid默认阻止这种循环?
答案 0 :(得分:0)
我在你提供的代码中没有看到循环,但是如果你实际上是在循环中创建MediaPlayer
并且没有调用release()
,那么你将导致错误通过消耗太多的可用资源。我有几个提示。
提示#1:请勿使用mService.getApplicationContext()
,因为(我认为)mService
是Service
,而 是Context
(Service
继承自Context
)。你基本上不应该使用getApplicationContext()
。
提示#2:使用一个MediaPlayer
并注意state machine。尝试这样的事情:
MediaPlayer mp = new MediaPlayer();
...
while (whateverCondition) { // I don't know what loop construct you are using...
mp.reset();
mp.setDataSource(this,
Uri.parse("android.resource://com.your.package/" + R.raw.click2);
mp.prepare();
mp.start();
}
...
mp.release();
您需要根据需要填写包裹名称,但它应该让您走上正确的道路。