Come posso visualizzare una cartella specifica in Android Gallery3D (cooliris)?

Sto utilizzando Gallery3D (froyo-stabile)

Sto provando a fare un'applicazione che visualizza solo immagini da una cartella specifica in una vista di galleria.

  • Barra degli strumenti e frammento di compressione
  • come trovare la posizione dell'elemento in un riepilogo di AutoCompletetextview riempito con Array
  • L'abbinamento Bluetooth "out of band" (OOB) su Android?
  • Le impostazioni dello sviluppatore di Android 4.2 non sono ancora disponibili
  • Come aggiungere tre livelli ListView in ExpandableListView in android
  • Controlli di "tipo di tipo atteso" di Android Studio?
  • Uri targetUri = Media.EXTERNAL_CONTENT_URI; String folderPath = Environment.getExternalStorageDirectory().toString() + "/DCIM/"; int folderBucketId = folderPath.toLowerCase().hashCode(); targetUri = targetUri.buildUpon().appendQueryParameter("bucketId", String.valueOf(folderBucketId)).build(); 

    In initializeDataSource()

     // Creating the DataSource objects. final LocalDataSource localDataSource = new LocalDataSource(Gallery.this, targetUri.toString(), false); 

    Ma ho errori

     "Error finding album " + bucketId); 

    In CacheService.loadMediaSets. :

      Log.e(TAG, "Error finding album " + bucketId); 

    Come posso risolvere questo problema? Grazie

  • Come passare tracce con Parcelable
  • Carica il problema di Android
  • Android: come utilizzare un timer
  • come submit HttpRequest e get risposta Json in android?
  • Come posso interrompere la logging vocale in Android?
  • Obiettivo C e Android
  • 2 Solutions collect form web for “Come posso visualizzare una cartella specifica in Android Gallery3D (cooliris)?”

    L'argomento "Errore nell'account" è probabilmente dovuto al fatto che la cartella "DCIM" che si ottiene dal bucketId dal codice non dispone di immagini direttamente in esso. Non si dovrebbe get l'errore se ad esempio si utilizza "/ DCIM / Camera" (supponendo che ci siano alcune immagini).

    Tuttavia, se capisco correttamente ciò che vuoi, credo che ci siano ulteriori modifiche che devi fare sul codice Gallery3D per renderlo visualizzato una cartella specifica quando viene avviata se segui questa rotta (dal momento che il codice non è stato progettato per essere usato come quello).

    Invece di utilizzare il codice qui sopra, credo che tu possa raggiungere quello che vuoi più facilmente impostando l'intento a uno specifico in onCreate() :

     @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setIntentToSpecificFolder(); mApp = new App(Gallery.this); // : // the rest of onCreate() code // : Log.i(TAG, "onCreate"); } private void setIntentToSpecificFolder() { String folderPath = Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera"; int folderBucketId = folderPath.toLowerCase().hashCode(); Uri targetUri = Media.EXTERNAL_CONTENT_URI.buildUpon().appendQueryParameter("bucketId", String.valueOf(folderBucketId)).build(); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(targetUri, "vnd.android.cursor.dir/image"); setIntent(intent); } 

    Fondamentalmente ciò che facciamo qui è sfruttando l' ACTION_VIEW intento di gestire l'applicazione quando viene fornito con un tipo vnd.android.cursor.dir/image MIME.

    Supponendo che sia necessario trovare il path dei file sotto una cartella.

      private String[] mFileStrings; private File[] listFile; public void getFromSdcard() { File file= new File(android.os.Environment.getExternalStorageDirectory(),"Your Folder Name"); if (file.isDirectory()) { listFile = file.listFiles(); mFileStrings = new String[listFile.length]; for (int i = 0; i < listFile.length; i++) { mFileStrings[i] = listFile[i].getAbsolutePath(); System.out.println("...................................."+mFileStrings[i]); } } } 

    Nel mio telefono la mia memory interna è stata chiamata sdcard0. Quindi per assicurarsi di avere il path di quello giusto è ansible utilizzare il codice riportto di seguito.

      String externalpath = new String(); String internalpath = new String(); public void getExternalMounts() { Runtime runtime = Runtime.getRuntime(); try { Process proc = runtime.exec("mount"); InputStream is = proc.getInputStream(); InputStreamReader isr = new InputStreamReader(is); String line; BufferedReader br = new BufferedReader(isr); while ((line = br.readLine()) != null) { if (line.contains("secure")) continue; if (line.contains("asec")) continue; if (line.contains("fat")) {//external card String columns[] = line.split(" "); if (columns != null && columns.length > 1) { externalpath = externalpath.concat("*" + columns[1] + "\n"); } } else if (line.contains("fuse")) {//internal storage String columns[] = line.split(" "); if (columns != null && columns.length > 1) { internalpath = internalpath.concat(columns[1] + "\n"); } } } } catch(Exception e) { e.printStackTrace(); } System.out.println("Path of sd card external............"+externalpath); System.out.println("Path of internal memory............"+internalpath); } 

    Un'alternativa:

    Inoltre è ansible utilizzare il carosello 3d per visualizzare le immagini utilizzando renderscrip come alternativa.

    http://code.google.com/p/android-ui-utils/downloads/detail?name=CarouselExample.zip .

    Snapshot risultante. Carosello 3d testato su Jelly Bean.

    immettere qui la descrizione dell'immagine

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.