2012-08-09 70 views
0

你好朋友我在我的項目中使用了下面的代碼。Android中的攝像機活動問題

權限:

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

XML文件: -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="Camera Test" /> 
    <ImageView android:id="@+id/camera_image" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" /> 
</LinearLayout> 

的Java文件: -

package com.demo.camera; 

import java.io.ByteArrayOutputStream; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import android.app.Activity; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.os.Bundle; 
import android.os.Environment; 
import android.widget.ImageView; 

public class CameraTest extends Activity { 

    private static final int CAMERA_PIC_REQUEST = 1111; 
    private ImageView mImage; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.camera_test); 

     mImage = (ImageView) findViewById(R.id.camera_image); 
     //1 
     Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
     startActivityForResult(intent, CAMERA_PIC_REQUEST); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == CAMERA_PIC_REQUEST) { 
      //2 
      Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); 
      mImage.setImageBitmap(thumbnail); 
      //3 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
      //4 
      File file = new File(Environment.getExternalStorageDirectory()+File.separator + "image.jpg"); 
      try { 
       file.createNewFile(); 
       FileOutputStream fo = new FileOutputStream(file); 
       //5 
       fo.write(bytes.toByteArray()); 
       fo.close(); 
       Intent intent=new Intent(this,Second.class); 
       startActivity(intent); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

當我使用此代碼它工作正常,我爲我提供也是圖像的預覽,但是當我嘗試導航到第二個活動時,我的應用程序掛起...但是,有時它會很快導航成爲第二項活動。請幫助我解決問題。

此外,每當附加文件也被添加到相機(DCIM)文件夾中時,我該如何刪除它。

感謝&問候,onkar

+0

在你的代碼中,在OnCreate方法本身,你正在啓動相機......你將如何進行第二次活動?給一些更多的信息.​​.. – Braj 2012-08-09 06:13:09

+0

@Basavaraj我有一個意圖後,該文件已被關閉導航。 – onkar 2012-08-09 06:16:51

回答

1

您應該檢查resultCode爲過,否則你的應用程序可以,如果你取消崩潰(如果你不拍了一張照片e.g並單擊後退按鈕)。

+0

我看了一下結果代碼,答案是-1 – onkar 2012-08-09 06:22:19

+0

+1 ......我認爲這只是因爲它無法將文件寫入外部存儲和掛起。你可以檢查像這樣requestCode == Constants.CAMERA_PIC_REQUEST && resultCode == Activity.RESULT_OK – Braj 2012-08-09 06:31:27

+0

@Basavaraj它的寫作,但它的寫兩次一次在我想要的代碼和其他我DCIM文件夾的目錄也。我也希望它從DCIM文件夾中刪除條目。你也可以幫助在條件檢查完成的片段嗎? – onkar 2012-08-09 06:36:09

0

檢查結果代碼。 secondaly您正在使用

try { 
       file.createNewFile(); 
       FileOutputStream fo = new FileOutputStream(file); 
       //5 
       fo.write(bytes.toByteArray()); 
       fo.close(); 
       Intent intent=new Intent(this,Second.class); 
       startActivity(intent); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

這裏意圖代碼,以便它需要時間,有時如果有例外,你的活動將不會被nevigated下一從捕獲的位圖創建一個文件之後開始。你可以在這裏使用進度對話框來顯示任務的進度

+0

耶夥伴我以後會做這個UI部分。另外讓我知道如果有什麼我可以做的快速導航? – onkar 2012-08-09 07:14:50