2015-09-13 75 views
1

我一直試圖在我的活動中包含ImageView以顯示用相機拍攝的最後一張照片。 ImageView基本上是右下角的縮略圖,稍後將作爲應用程序庫的onclick意圖..我希望它顯示拍攝的最後一張照片以及當您打開應用程序時,其目錄中最近的照片。這是此Java代碼段:顯示在ImageView中拍攝的最後一張照片不起作用

private PictureCallback getPictureCallback() { 
    PictureCallback picture = new PictureCallback() { 

     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      File pictureFile = getOutputMediaFile(); 

      if (pictureFile == null) { 
       return; 
      } 
      try { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       fos.write(data); 
       fos.close(); 
       // 
       final ImageView GalleryShortcut = (ImageView) findViewById(R.id.galleryshortcut); 
       BitmapFactory.Options scalingOptions = new BitmapFactory.Options(); 
       scalingOptions.inSampleSize = camera.getParameters().getPictureSize().width/GalleryShortcut.getMeasuredWidth(); 
       final Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length, scalingOptions); 
       GalleryShortcut.setImageBitmap(bmp); 
       GalleryShortcut.setVisibility(ImageView.VISIBLE); 

      } catch (FileNotFoundException e) { 
      } catch (IOException e) { 
      } 

      Preview.refreshCamera(Camera); 
     } 
    }; 

這是.XML ImageView的代碼:

<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:scaleType="centerCrop" 
     android:adjustViewBounds="true" 
     android:id="@+id/galleryshortcut" 
     android:maxHeight="60dp" 
     android:maxWidth="80dp" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:contentDescription="@null"/> 

系統崩潰日誌:

11月9日至14日:09:23.784 2617- 2617/cam.fornax.fornaxcam E/AndroidRuntime:致命例外:main 進程:cam.fornax.fornaxcam,PID:2617 java.lang.RuntimeException:無法恢復活動{cam.fornax.fornaxcam/cam.fornax.fornaxcam .FRNXCame ra}:java.lang.RuntimeException:無法連接到相機服務 at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3103) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134) at android .app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 在android.app.ActivityThread.-wrap11(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1344) 的機器人。 os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang。方法。啓動(本地方法) at com.and roid.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 引起:java.lang.RuntimeException:失敗連接到照相機服務 在android.hardware.Camera。(Camera.java:495) 在android.hardware.Camera.open(Camera.java:341) 在cam.fornax.fornaxcam.FRNXCamera.onResume(FRNXCamera.java :209) at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1258) at android.app.Activity.performResume(Activity.java:6312) at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3092 ) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3134) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2481) 在android.app.ActivityThread.-wrap11(ActivityThread.java)

回答

-1

你可以嘗試致電:

GalleryShortcut.invalidate()你打電話後GalleryShortcut.setImageBitmap(bmp);

如果這不起作用,您將不得不在處理程序中運行圖像設置。

+0

謝謝您的回答!它不適合我。有沒有處理這個教程?我是一名初學者,我找不到任何幫助我的鏈接。 –

+0

看看threading/ui android文檔:https://developer.android.com/training/multiple-threads/communicate-ui。html –

+0

謝謝,我會閱讀它並嘗試找到解決方案! –

0

你必須做,在UI線程這樣

GalleryShortcut.post(new Runnable() { 
     @Override 
     public void run() { 
      GalleryShortcut.setImageBitmap(bmp); 
      GalleryShortcut.setVisibility(ImageView.VISIBLE); 
     } 
    }) 
+0

你好,謝謝你的回答。每次我嘗試捕捉圖片時都會崩潰。此外,ImageView不會顯示在app目錄中拍攝的最近照片。 –

+0

@MatejVarga,你可以顯示crashlog嗎? – bananabastard

+0

我會的。事情是,模擬器不會啓動相機。但它適用於所有物理設備。 –

相關問題