98 Глава 5 •
Мультимедиа
import android.os.Bundle;
import android.view.KeyEvent;
public class Audio extends Activity {
private MediaPlayer mp;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setVolumeControlStream(AudioManager.STREAM_MUSIC);
}
}
Метод
setVolumeControlStream()
�ооб�ает �������� что ко�да пол�зовател� нажи�
�������� что ко�да пол�зовател� нажи�
� что ко�да пол�зовател� нажи�
�ает клавиши для увеличения или у�ен�шения �ро�ко�ти во вре�я выполнения
приложения� оно должно из�енят� �ро�ко�т� �узыки или дру�их �едиа�атериалов�
в�е�то то�о чтобы из�енят� �ро�ко�т� звонка�
Далее� на� нужно перехватит� нажатие клавиш и прои�рат� подходя�ие звуки�
Мы �делае� �то� переопределив �етод
Activity .onKeyDown()
�
Рис . 5 .2 . Копирование аудиофайлов в папку res/raw вашего
проекта
Audio/src/org/example/audio/Audio.java
1 @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
5 .1 . Проигрывание аудио
99
-
int resId;
- switch (keyCode) {
5 case KeyEvent.KEYCODE_DPAD_UP:
- resId = R.raw.up;
- break;
- case KeyEvent.KEYCODE_DPAD_DOWN:
- resId = R.raw.down;
10 break;
- case KeyEvent.KEYCODE_DPAD_LEFT:
- resId = R.raw.left;
- break;
- case KeyEvent.KEYCODE_DPAD_RIGHT:
15 resId = R.raw.right;
- break;
- case KeyEvent.KEYCODE_DPAD_CENTER:
- case KeyEvent.KEYCODE_ENTER:
- resId = R.raw.enter;
20 break;
- case KeyEvent.KEYCODE_A:
- resId = R.raw.a;
- break;
- case KeyEvent.KEYCODE_S:
25 resId = R.raw.s;
- break;
- case KeyEvent.KEYCODE_D:
- resId = R.raw.d;
- break;
30 case KeyEvent.KEYCODE_F:
- resId = R.raw.f;
- break;
- default:
- return super.onKeyDown(keyCode, event);
35 }
-
- // Высвобождение ресурсов от предыдущих
вызовов MediaPlayer
- if (mp != null) {
- mp.release();
40 }
-
- // Создание нового объекта MediaPlayer для
проигрывания этого звука
- mp = MediaPlayer.create(this, resId);
- mp.start();
45
- //
Указание того, что нажатие данной
клавиши было обработано
-
return true;
- }
Первая ча�т� кода �етода зани�ает�я выборо� ре�ур�а в зави�и�о�ти от то�о�
какая клавиша была нажата� Зате�� в �троке 39 �ы и�пол�зуе� �етод
release()
�
чтобы о�тановит� л�бые звуки� которые уже прои�рыва�т�я� и о�вободит� л�бые
100 Глава 5 • Мультимедиа
ре�ур�ы� �вязанные �о �тары� �кзе�пляро�
MediaPlayer
� Е�ли вы забыли �делат�
�то� про�ра��а завершит�я � ошибкой (��отрите врезку)�
В �троке 43 �ы и�пол�зуе� �етод
create()
� чтобы �оздат� новый �кзе�пляр
MediaPlayer
� и�пол�зуя выбранный звуковой ре�ур�� и вызывае� �етод
start()
� что�
бы начат� е�о прои�рыват�� Метод
start()
а�инхронен� он возвра�ает управление
не�едленно� незави�и�о от то�о� как дол�о длит�я звук� Вы �ожете и�пол�зоват�
�етод
setOnCompletionListener()
� чтобы узнат�� ко�да завершит�я прои�рывание клипа�
Достарыңызбен бөлісу: