2015-08-03 7 views
5

Ich bin neu in Android-Entwicklung, ich mache kleine Anwendung, um USB Camrea Bild mit UVCCamera zu erfassen.Captured Bild wurde nicht in der Galerie, aber es erfolgreich in SD-Karte gespeichert

Ich habe Bild aufgenommen in sdcard wie diese

File filepath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "IMG_"+getDateTime() + ".jpg"); 
mCameraClient.captureStill(filepath.toString()); 

hier mCameraClient mit UVC Kamera und Aufnahme-Bild und speichern wird INTRACT in diesem Pfad mit UVCCamera und gespeichert, und es wird Methode Rückruf onCaptureDone

@Override 
     public void onCaptureDone(final String path) { 
      // TODO Auto-generated method stub 
      Log.e(TAG, "onCaptureDone called"); 
      getActivity().runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        // TODO Auto-generated method stub 
        //Toast -- Images Saved. 
       } 
      }); 
     } 
    }; 

Dann rufe ich Galerie von einem Bildknopf an onClickListener

private MediaScannerConnection conn; 

File folder = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)); 
    File[] mImagefile = folder.listFiles(new FilenameFilter() { 
        public boolean accept(File dir, String filename) { 

          return filename.endsWith(".jpg"); 
        } 
       }); 

       if (mImagefile.length > 0) { 

        SCAN_PATH = folder.toString() + "/" 
          + mImagefile[mImagefile.length -1].getName(); 
        Log.e(TAG, "SCAN PATH = " + SCAN_PATH); 

        if (conn != null) { 
         conn.disconnect(); 
        } 

        conn = new MediaScannerConnection(this, this); 
        conn.connect(); 
       } else { 
        //Toast -- No Images Available 
       } 

Wenn der Filter erfolgreich ist.

@Override 
    public void onMediaScannerConnected() { 
     // TODO Auto-generated method stub 
     Log.e(TAG, "onMediaScannerConnected"); 
     ; 
     conn.scanFile(SCAN_PATH, null); 
    } 

    @Override 
    public void onScanCompleted(String path, Uri uri) { 
     // TODO Auto-generated method stub 
     try { 
      Log.e(TAG, "OnCompleted path = " + path); 
      if (uri != null) { 
       Intent intent = new Intent(Intent.ACTION_VIEW); 
       intent.setData(uri); 
       startActivity(intent); 
      } 
     } finally { 
      Log.e(TAG, "OnCompleted Disconnecting"); 
      conn.disconnect(); 
      conn = null; 
     } 
    } 

Hier war mein Problem in der Galerie alle Bilder wurden nicht angezeigt.

und ich habe in gespeichert Verzeichnis überprüft, da alle Bilder wurden erfolgreich gespeichert. [Bilder nicht beschädigt wurden, ich habe überprüft]

und ich habe in Standard-Galerie-Anwendung, dass auch diese Bilder überprüft wurden nicht angezeigt .

Bitte helfen Sie mir dabei.

Edit 1:

ich eine Sache beobachtet haben, wenn ich Bild erfassen und speichern, ist es nicht in der Galerie zeigt aber nach einiger Zeit wie 2-3hrs seine wurde in der Galerie erscheinen. ICH MÖCHTE WISSEN, WARUM DAS PASSIERT?

Dank

+0

Sie müssen den Medienscanner über das neue Image benachrichtigen. Http://stackoverflow.com/questions/4753252/scan-android-sd-card-for-new-files/23078323#23078323 –

+1

@HarishSridharan: Ich habe versucht, nicht funktioniert – iosLearner

+0

Meine Antwort hinzugefügt. –

Antwort

7

Setzen Sie diese Codezeile nach der Aufnahme eines Bildes und speichern Sie es auf SD-Karte.

File image_path="your image path"; 
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(image_path))); 

Hier image_path wird Pfad Bilddatei gespeichert

Hope this Sie hilft ..!

0

Sie haben in Mediengalerie einfügen und eine Miniaturansicht für sie erstellen. Andernfalls, bis die Mediengalerie den Scan durchführt (normalerweise geplant, wie nach neuen Bildern alle zwei Stunden suchen), werden Sie sie nicht in der Galerie sehen.

Mit den folgenden Schritten können Sie einen Eintrag erstellen und eine Miniaturansicht für die Mediengalerie erstellen.

Verwandte Themen