я получил этот класс здесь:Play волна файл каждые 500 мс
public class ViewBeat1 extends MasterView {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
stream = getAssets().open("some_gif.gif");
} catch (IOException e) {
e.printStackTrace();
}
GifMovieView view = new GifMovieView(this, stream);
setContentView(view);
run();
}
public void run() {
// Get the ringtone
int milliseconds = 0;
final SoundPool sp = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
final int loaded = sp.load(this, R.raw.beat, 1);
boolean played = false;
while (milliseconds < 300000) {
if (milliseconds >= 20000 && !played) {
sp.stop(loaded);
sp.release();
played = true;
playSong(this.getClass().getSimpleName().toLowerCase(),
View6.class.getName(), 4000);
finish();
} else if (milliseconds <= 20000) {
try {
sp.play(loaded, 1, 1, 1, 0, 1);
Thread.sleep(500);
milliseconds += 500;
} catch (Exception e) {
Log.v("out of the thread", e.getMessage().toString());
}
}
}
}
}
MasterView простирается от деятельности и просто делает некоторые вещи, скорее всего, здесь не нужны. GifMovieView устанавливает анимацию gif и помещает ее в Contentview.
Теперь я хочу воспроизвести этот 500-миллиметровый длинный волновой файл каждые 500 мс, вроде как быстрое сердцебиение (120 уд/мин). Как-то, когда я делаю это так, он не работает должным образом, и вид приложения больше не отвечает. У кого-нибудь есть лучшее решение для достижения этого?
Приветствуем вас за помощь - сообщество StackOverflow является лучшим!
Попробуйте использовать свой код в обработчике с 'postDelayed' – kabuto178
Не могла бы вы показать мне, как это будет выглядеть? Потому что я пытался, и он не работал должным образом. – Kazoooka
** onCreate() ** не подходит ** main() ** в однопоточном приложении. Вы не можете просто продолжать исполнение навсегда. Ожидается, что все действия, которые выполняются в основном потоке, будут выполнять свою работу и выйти. Если вы хотите сделать что-то, что требует времени, вам нужно запустить его в отдельном потоке или сделать это с помощью обработчика, как предлагает JuniKim. –