Android obtener Bitmap o sonido de los activos
Necesito obtener Bitmap y sonido de los activos. Intento hacer esto:
BitmapFactory.decodeFile("file:///android_asset/Files/Numbers/l1.png");
Y así:
- Activos de Android sin contexto
- Seguridad de activos en Android
- ¿Es posible obtener la ruta completa de acceso a un archivo de recursos de aplicaciones de Android como una cadena?
- AndroidPDFViewer - No se puede abrir el documento pdf en mi aplicación
- Copiando toda la carpeta con su contenido de los activos a los archivos internos de la aplicación /
getBitmapFromAsset("Files/Numbers/l1.png"); private Bitmap getBitmapFromAsset(String strName) { AssetManager assetManager = getAssets(); InputStream istr = null; try { istr = assetManager.open(strName); } catch (IOException e) { e.printStackTrace(); } Bitmap bitmap = BitmapFactory.decodeStream(istr); return bitmap; }
Pero recibo espacio libre, no imagen.
¿Como hacer esto?
- Cómo proteger los activos almacenados en Android APK
- Android Cómo leer un recurso desde fuera de la actividad principal
- Seguridad de la carpeta de activos de Android
- Android assetManager
- Lectura de PDF desde la carpeta de activos usando PDFViewer.jar
- ¿Cómo puedo transferir un dispositivo de prueba de base de datos al dispositivo desde mi aplicación de prueba de unidad
- ¿Cómo cargar videos de la carpeta de activos? (Para reproducirlas con VideoView)
- Lectura de archivos desde un archivo ZIP en su carpeta de activos de Android
public static Bitmap getBitmapFromAsset(Context context, String filePath) { AssetManager assetManager = context.getAssets(); InputStream istr; Bitmap bitmap = null; try { istr = assetManager.open(filePath); bitmap = BitmapFactory.decodeStream(istr); } catch (IOException e) { // handle exception } return bitmap; }
El camino es simplemente su nombre de archivo fx bitmap.png. Si utiliza el mapa de bits de subcarpeta / luego su bitmap / bitmap.png
Utilizar este código su funcionamiento
try { InputStream bitmap=getAssets().open("icon.png"); Bitmap bit=BitmapFactory.decodeStream(bitmap); img.setImageBitmap(bit); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); }
Actualizar
Durante la decodificación de mapa de bits nos encontramos con más frecuencia con la excepción de desbordamiento de memoria si tamaño de imagen es muy grande. Así que la lectura de artículo Cómo mostrar la imagen de manera eficiente le ayudará.
La respuesta aceptada nunca cierra el InputStream
. Este es un método de utilidad para obtener un Bitmap
de Bitmap
en la carpeta de activos:
/** * Retrieve a bitmap from assets. * * @param mgr * The {@link AssetManager} obtained via {@link Context#getAssets()} * @param path * The path to the asset. * @return The {@link Bitmap} or {@code null} if we failed to decode the file. */ public static Bitmap getBitmapFromAsset(AssetManager mgr, String path) { InputStream is = null; Bitmap bitmap = null; try { is = mgr.open(path); bitmap = BitmapFactory.decodeStream(is); } catch (final IOException e) { bitmap = null; } finally { if (is != null) { try { is.close(); } catch (IOException ignored) { } } } return bitmap; }
- Patrón ViewHolder correctamente implementado en CursorAdapter personalizado?
- Crear Bitmap de byteArray en android