Implementación de sonidos de pitido en la aplicación de Android
Tengo una aplicación con la funcionalidad deseada.
Howerver, en ciertos momentos tostadas se muestran y quiero un pitido doble para jugar al mismo tiempo que los tostados se muestran para alertar al usuario de los mensajes que se muestran.
- Cómo sintetizar sonidos de instrumentos en Android (Piano, Batería, Guitarra, etc ...)
- Lo que se requiere para que Android utilice un nuevo Audio HAL
- Android Superpowered SDK Grabación y reproducción simultáneamente
- Cómo utilizar audio de Android con baja latencia
- Reproducir stream de RTMP de audio en android
No estoy seguro de cuál es el mejor enfoque para reproducir sonidos en android o si hay algunos sonidos por defecto que podría acceder a utilizar para las alertas.
¡Algún consejo sería muy apreciado!
Gracias
ACTUALIZAR
Tengo el siguiente código en mi archivo de actividad principal:
public void playAlertTone(final Context context){ Thread t = new Thread(){ public void run(){ MediaPlayer player = null; int countBeep = 0; while(countBeep<2){ player = MediaPlayer.create(context,R.raw.beep); player.start(); countBeep+=1; try { Thread.sleep(player.getDuration()+100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; t.start(); }
Tengo un archivo de sonido llamado pitido en res / raw
¿Cómo puedo llamar a este método en una instrucción if donde se muestra un brindis por lo que los 2 se producen al mismo tiempo?
ACTUALIZACIÓN 2:
Aquí está el código en el que intento llamar al método de alerta:
if (elapsedTime > hourAlert) { LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root)); TextView text = (TextView) layout.findViewById(R.id.text); text.setText("HOUR PASSED"); Toast toast = new Toast(getApplicationContext()); toast.setGravity(Gravity.BOTTOM, 0, 160); toast.setDuration(Toast.LENGTH_LONG); toast.setView(layout); toast.show(); playAlertTone(getApplicationContext()); // Edited here now call
¿Algunas ideas?
- Android: Cómo cambiar el tono del sonido de salida (en tiempo real)
- Entrada y salida de audio inmediatas Android
- Decodificación de audio a través de Android utilizando FFMpeg
- Combinar una imagen en un archivo de audio y hacer un archivo de vídeo en android mediante programación
- Cómo generar el flujo elemental de AAC ADTS con Android MediaCodec
- ¿Cuál es la unidad de la amplitud devuelta del método getMaxAmplitude?
- Android en vivo de vídeo - El audio no funciona
- Redirigir audio / crear rutas de sonido alternativas en Android
Puede poner su archivo de audio en la carpeta res / raw de su proyecto
Y reproducir audio en un hilo
public void playAlertTone(final Context context){ Thread t = new Thread(){ public void run(){ MediaPlayer player = null; int countBeep = 0; while(countBeep<2){ player = MediaPlayer.create(context,R.raw.beep); player.start(); countBeep+=1; try { // 100 milisecond is duration gap between two beep Thread.sleep(player.getDuration()+100); player.release(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }; t.start(); } //call it like this from your activity' any method if(myCondition){ Toast.makeText(getApplicationContext(), text, duration).show(); playAlertTone(getApplicationContext()); }
Utilizar MediaPlayer
,
http://developer.android.com/reference/android/media/MediaPlayer.html
Hay mucho que saber acerca de cómo utilizar, que está cubierto en el enlace anterior. Aquí está un fragmento de la camisa que ilustra el uso,
final MediaPlayer mediaPlayer = new MediaPlayer(); try { mediaPlayer.reset(); mediaPlayer.setDataSource(...); mediaPlayer.prepare(); } catch (IllegalStateException e) { mediaPlayer.release(); } catch (IOException e) { mediaPlayer.release(); } catch (IllegalArgumentException e) { mediaPlayer.release(); } mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer mp) { mediaPlayer.release(); } }); mediaPlayer.start();
try { AssetFileDescriptor afd = getAssets().openFd("gavel_single.wav"); mMediaplayer = new MediaPlayer(); mMediaplayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); afd.close(); mMediaplayer.prepare(); mMediaplayer.start(); mMediaplayer.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mMediaPlayer) { mMediaPlayer.stop(); mMediaPlayer.release(); } }); } catch (Exception e) { e.printStackTrace(); }
Poner su archivo de música en la carpeta de activos