2014-12-13 39 views
0

我想在SD卡上存儲位圖聽到是我的代碼存儲的圖像,它在所有設備上工作正常,但不在三星設備只...錯誤,而在三星設備只存儲位圖(PNG)

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 

<uses-feature android:name="android.hardware.camera" /> 
<uses-feature android:name="android.hardware.camera.autofocus" /> 

通話的AsyncTask 使用此代碼

new SaveFile(mybitmap).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 

我的Java文件的AsyncTask片斷

class SaveFile extends AsyncTask<String, String, String> { 

    Bitmap bmp; 

    public SaveFile(Bitmap bmp) { 
     // TODO Auto-generated constructor stub 

     this.bmp = bmp; 

    } 

    @Override 
    protected void onPreExecute() { 
     // TODO Auto-generated method stub 
     super.onPreExecute(); 

     FullScreenViewActivity.this.progress = ProgressDialog.show(
       FullScreenViewActivity.this, "", "Please wait..."); 
    } 

    @Override 
    protected String doInBackground(String... f_url) { 
     Log.i("asynk call ", "from"); 

     OutputStream output; 

     Calendar cal = Calendar.getInstance(); 

     // Find the SD Card path 
     File filepath = Environment.getExternalStorageDirectory(); 

     // Create a new folder in SD Card 
     File dir = new File(filepath.getAbsolutePath() + "/Tatto/"); 
     dir.mkdirs(); 

     String mImagename = "image" + cal.getTimeInMillis() + ".png"; 

     // Create a name for the saved image 
     file = new File(dir, mImagename); 

     // Show a toast message on successful save 
     /* 
     * Toast.makeText(CaptureActivity.this, "Image Saved to SD Card", 
     * Toast.LENGTH_SHORT).show(); 
     */ 
     try { 

      output = new FileOutputStream(file); 
      // Compress into png format image from 0% - 100% 
      bmp.compress(Bitmap.CompressFormat.PNG, 100, output); 
      output.flush(); 
      output.close(); 
     } 

     catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 

      progress.dismiss(); 
      Log.i("captureImage call + in catch ", "" + e); 

     } 

     Log.i("asynk call end ", "from"); 

     return null; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 


     progress.dismiss(); 
     Toast.makeText(FullScreenViewActivity.this, "Image Saved...", 
       Toast.LENGTH_SHORT).show(); 

    } 

} 

錯誤日誌..

12-14 13:53:36.361:d/AndroidRuntime(20430):關閉VM 12-14 13:53:36.361:W/dalvikvm(20430):主題ID = 1:線程退出未捕獲的異常(組= 0x419088b0) 12-14 13:53:36.371:E/AndroidRuntime(20430):致命例外:主 12-14 13:53:36.371:E/AndroidRuntime(20430) java.lang.RuntimeException:setParameters failed 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.hardware.Camera.native_setParameters(Native Method) 12-14 13:53:36.371:E/AndroidRuntime (20430):在android.hardware.Camera.setParameters(Camera.java:1551) 12-14 13:53:36.371:E/AndroidRuntime(204 30):at com.karma.tattoo.MainActivity.surfaceCreated(MainActivity.java:403) 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.view.SurfaceView.updateWindow(SurfaceView.java: 571) 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.view.SurfaceView.access $ 000(SurfaceView.java:86) 12-14 13:53:36.371:E/AndroidRuntime(20430 ):在android.view.SurfaceView $ 3.onPreDraw(SurfaceView.java:175) 12-14 13:53:36.371:E/AndroidRuntime(20430):在android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:837) E:// AndroidRuntime(20430):at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1870) 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1009) 12-14 13:53:36.371:E/AndroidRu ntime(20430):at android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:5508) 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.view.Choreographer $ CallbackRecord.run Choreographer.java:749) 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.view.Choreographer.doCallbacks(Choreographer.java:562) 12-14 13:53:36.371:E/AndroidRuntime(20430):在android.view.Choreographer.doFrame(Choreographer.java:532) 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer。 java:735) 12-14 13:53:36.371:E/AndroidRuntime(20430):at android.os.Handler.handleCallback(Handler.java:730) 12-14 13:53:36.371:E/AndroidRuntime 20430):at android.os.Handler.dispatchMessage(Handler.java:92) 12-14 13:53:36.371:E/AndroidRuntime(20430):在android.os.Looper.loop(Looper.java:213) 12-14 13:53:36.371:E/AndroidRuntime(20430):在android.app.ActivityThread.main(ActivityThread.java: 5225) 12-14 13:53:36.371:E/AndroidRuntime(20430):at java.lang.reflect.Method.invokeNative(Native Method) 12-14 13:53:36.371:E/AndroidRuntime(20430):在java.lang.reflect.Method.invoke(Method.java:525) 12-14 13:53:36.371:E/AndroidRuntime(20430):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit .java:741) 12-14 13:53:36.371:E/AndroidRuntime(20430):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557) 12-14 13:53:36.371 :E/AndroidRuntime(20430):在dalvik.system.NativeStart。主(本地方法)

請幫助我,如果我錯了....這個問題只在三星設備...

+0

你的錯誤日誌在哪裏? – Jerome 2014-12-13 13:46:22

+0

@Jerome檢查我的編輯.. – 2014-12-15 07:31:02

回答