Android Soundpool Load (String path, int priority)
Estoy intentando cargar un sonido de androide. El sonido está bajo res/raw/myownsound.wav
. Ya sé que ya puedo cargar el sonido usando:
soundPool.load(context, R.raw.myownsound, 1)
Para propósitos de personalización, me gustaría cargarlo usando:
- Bitmaps de Android en la memoria de fugas xml?
- Recursos de Android que convierten a string Warning TypedValue
- ¿Cómo obtener la ID de Android para un elemento de menú en Android?
- Excepción en el ajuste del color de fondo
- InputStream de la carpeta de activos de Android devuelve vacío
soundPool.load("res/raw/myownsound", 1)
… pero obtengo el siguiente error: error loading res/raw/myownsound
. También intenté lo siguiente:
soundPool.loadSound("android.resource://upg.GraphismeBase/raw/myownsound", 1)
.. pero también tengo un error: error loading android.resource://upg.GraphismeBase/raw/myownsound
¿Cuál es la forma correcta de usar soundPool.load (path, priority)?
- Android usando recursos de matriz xml
- . \ key.p12: abierto fallido: ENOENT (No hay tal archivo o directorio)
- Alcance de los valores de R.id
- Android obtiene tipo de recurso de id
- Android - colors.xml recurso a valor int
- Android: carga la fuente personalizada en la tarjeta SD
- Cómo averiguar qué recursos no se utilizan en una aplicación para Android
- Eclipse Android no limpia, no actualiza los recursos
Crear una estructura de carpetas en su proyecto
/assets/sounds/data/
A continuación, copie su archivo wav allí.
// Declare globally if needed int mySoundId; SoundPool soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0 ); AssetManager am = this.getAssets(); //Use in whatever method is used to load the sounds try { mySoundId = soundPool.load(am.openFd("sounds/data/myownsound"), 1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
Puede probar esto (no está seguro de su funcionamiento):
SoundPool mySoundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0); int myAudioFile = getResId("claps", R.raw.class); try{ mySoundPool.load(context.getActivity(),myAudioFile,1); } catch (Exception e){ message = String.valueOf(e); } public static int getResId(String variableName, Class<?> c) { Field field = null; int resId = 0; try { field = c.getField(variableName); try { resId = field.getInt(null); } catch (Exception e) { e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } return resId; }
Simple manera de hacerlo con un contexto llamado mContext
. Carga el recurso por nombre obteniendo el ID de identificador en tiempo de ejecución.
int sound_id = mContext.getResources().getIdentifier("myownsound", "raw", mContext.getPackageName()); soundPool.load(mContext, sound_id, 1);
También funciona para cargar archivos extraíbles o xml, reemplazando "raw"
por "drawable"
o "xml"
por ejemplo.
- Android Studio falla – unsupport no soportado versión secundaria mayor 51.0
- ¿Cómo puedo hacer que una aplicación para Android deje de reiniciarse cada vez que se abra?