Blackberry: FileSystemJournalListener no devuelve la ruta de la imagen recién capturada
Frecuentes
Visto 381 veces
0
FileSystemJournalListener no devuelve la ruta de la imagen recién capturada. Mi cámara guarda imágenes en sdcard/blackberry/pictures/...
Pero el oyente me da una ruta de imagen en blanco en store/home/user/pictures/Image_1337710522032.jpg
y el archivo guardado real está en sdcard/BlackBerry/pictures/IMG00010-20111019-1225.jpg
¿Cómo se supone que configure FileSystemJournalListener para escanear la tarjeta SD en busca de la ruta de la imagen recién agregada?
Gracias de antemano.
1 Respuestas
1
Este es el ejemplo apropiado a seguir. de la documentación para desarrolladores de BlackBerry.
En la aplicación que tengo que hace esto, mi FileSystemJournalListener
se parece al código de abajo. Tiene que iterar sobre los USN para encontrar la nueva imagen.
Tú también puedes ver esta página para obtener más información acerca de la FileSystemJournal
y cómo buscar nuevos archivos.
public class FileSystemListener implements FileSystemJournalListener, Runnable {
/** The last USN to have to search until, when looking for new files added to the file system */
private long _lastUSN;
/** The filename of the new image */
private String _imageFilename;
public void run() {
// TODO: do something with the new image
}
public FileSystemListener() {
// we record the next system USN before the Camera app has a chance to add a new file
_lastUSN = FileSystemJournal.getNextUSN();
}
public void fileJournalChanged() {
long nextUSN = FileSystemJournal.getNextUSN();
boolean imgFound = false;
// we have to search for the file system event that is the new image
for (long lookUSN = nextUSN - 1; (lookUSN >= _lastUSN) && !imgFound; --lookUSN) {
FileSystemJournalEntry entry = FileSystemJournal.getEntry(lookUSN);
if (entry == null) {
break;
} else {
String path = entry.getPath();
if (path != null) {
if (path.endsWith("png") || path.endsWith("jpg") || path.endsWith("bmp") || path.endsWith("gif")) {
switch (entry.getEvent()) {
case FileSystemJournalEntry.FILE_ADDED:
// either a picture was taken or a picture was added to the BlackBerry device
_lastUSN = lookUSN;
_imageFilename = path;
imgFound = true;
// unregister for file system events?
UiApplication.getUiApplication().removeFileSystemJournalListener(this);
// let this callback complete before responding to the new image event
UiApplication.getUiApplication().invokeLater(this);
break;
case FileSystemJournalEntry.FILE_DELETED:
// a picture was removed from the BlackBerry device;
break;
}
}
}
}
}
}
}
contestado el 25 de mayo de 12 a las 23:05
Gracias. ¿Puede el código anterior detectar las imágenes agregadas en la tarjeta SD? o solo rastrea los cambios en el sistema de archivos de la memoria interna? - user1407894
@user1407894, Sí, el código anterior puede detectar imágenes añadidas a la tarjeta SD. Acabo de ejecutar la aplicación que construí que usa este código para probarla. Funciona para el almacenamiento interno o la tarjeta SD. Obviamente, los caminos serán diferentes para esas dos ubicaciones (String path =
). Pero sí, detecta archivos en la tarjeta multimedia. - Nate
gracias amigo :) lo comprobará ahora. - user1407894
@usuario1407894. No hay problema. También señalaré que mi código anterior solo encuentra una imagen. Después de encontrar la nueva imagen, deja de escuchar más eventos del sistema de archivos. Esto era correcto para mi aplicación, pero podría no serlo para la tuya. De todos modos, puedes borrar mi llamada a removeFileSystemJournalListener
si quieres que tu app siga esperando más imágenes. - Nate
Gracias por tu valioso comentario :) - user1407894
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java blackberry or haz tu propia pregunta.
por favor publique el código para su oyente. - Mister Smith