2012-04-17 32 views
1

我想捕捉圖像&將它保存到SD卡。現在它工作正常。 我的問題是1)拍攝後OK and Cancel按鈕是avialble。當我點擊確定只需要將圖像保存到SD卡。onActivityResult不適用於Camera -Tab ActivityGrup

2)它不來onActivityResult方法。我在ActivityGroup課內寫過我的onActivityResult

此代碼爲當相機按鈕用戶點擊,它就會打開cameara &保存它

 //Camera 
    Button btnCamera =(Button)findViewById(R.id.btnCamera); 
    btnCamera.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      selectedImagePath = Environment.getExternalStorageDirectory()+"/"+retailerCode+"-"+count+".jpg"; 
      imgName =retailerCode+"-"+count+".jpg"; 
      count++; 
      File file = new File(selectedImagePath); 
      Uri outputFileUri = Uri.fromFile(file); 
      Intent intent = new Intent (android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
      Bundle b = new Bundle(); 
      b.putString("Activity", "RetailerOrderSActivity"); 
      b.putString("RetailerName", seletctedRetailer); 
      b.putString("RetailerCode", retailerCode); 
      intent.putExtras(b); 
      intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri); 
      startActivityForResult(intent, CAMERA_PIC_REQUEST); 
      onPhotoTaken(); 


     } 
    }); 

    protected void onPhotoTaken() { 
     _taken = true; 
     DBAdapter dbAdapter = DBAdapter.getDBAdapterInstance(CameraMainActivity.this); 
     dbAdapter.openDataBase(); 
     boolean status = dbAdapter.saveImageInfo(retailerCode,strExecutive,strBusinessUnit,strTerritoryCode,imgName,visitNumber); 
     if(status) { 
      Toast.makeText(SalesActivityGroup.group.getApplicationContext(), "Image has been saved successfully" , Toast.LENGTH_SHORT).show(); 
     }else { 
      Toast.makeText(SalesActivityGroup.group.getApplicationContext(), "Image has not been saved successfully" , Toast.LENGTH_SHORT).show(); 
     } 
     dbAdapter.close(); 
     lstCaptures = getAllImage(imgDateVal.getText().toString()); 
     imageViewTable.removeAllViews(); 
     loadTableLayout(); 
    } 

這是代碼的ActivityGroup

 public class SalesActivityGroup extends ActivityGroup { 
      @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     System.out.println("===REQUEST=====" +requestCode); 
     System.out.println("==resultCode==" +resultCode); } } 

其實我需要調用onPhotoTakenonActivityResult。根據目前我的代碼,如果用戶也點擊取消,它將信息保存到數據庫。圖像不捕獲..

這是我的應用程序圖像:

enter image description here

這是後捕獲圖像按鈕顯示:

enter image description here 請人理清這個問題..

在此先感謝

+1

是,嘗試[這](http://stackoverflow.com/a/6679665/940096)之一。 – Praveenkumar 2012-04-17 12:20:47

回答

1

請檢查以下回答

假設我有一個按鈕選擇 &當用戶點擊按鈕時,相機屏幕將會打開。

btn_select.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 

      String fileName = new StringBuilder(String.valueOf(System.currentTimeMillis())).append(
                 ".jpg").toString(); 
        ContentValues values = new ContentValues(); 
        values.put(MediaStore.Images.Media.TITLE, fileName); 
        mCapturedImageURI = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 
        values); 
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
        intent.putExtra(MediaStore.EXTRA_OUTPUT, mCapturedImageURI); 
        startActivityForResult(intent, IShipdocsMobileConstants.CAMERA_ACTION); 
       } 
    }); 

用戶採取後相片&點擊上的保存/ OK按鈕(取決於在移動設備上),使用以下代碼來對所捕獲的圖像獲取數據。

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     super.onActivityResult(requestCode, resultCode, intent); 
     if (requestCode == IShipdocsMobileConstants.CAMERA_ACTION) { 
      if (resultCode == RESULT_OK) { 
       String[] projection = { MediaStore.Images.Media.DATA }; 
       Cursor cursor = managedQuery(mCapturedImageURI, projection, null, null, null); 
       int column_index_data = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       String capturedImageFilePath = cursor.getString(column_index_data); 
       SelectedFileInfo selectedFileObj = null; 
       ArrayList<SelectedFileInfo> cameraArrList = new ArrayList<SelectedFileInfo>(); 
       File fileObj = new File(capturedImageFilePath); 
       String fileSize = String.valueOf(fileObj.length()); //File Size 
       String fileName = Utils.getFileName(capturedImageFilePath); //File Name 
       }else if (resultCode == RESULT_CANCELED) { 
     // handle the condition in which the user didn't save the image 
       } 
      } else { 
       // handle the condition in which the request code was not CAMERA_ACTION , maybe send the user to the home/default screen 
      } 

     } 
    } 
0

問題是調用的地方,我需要調用getParent().startActivityForResult(intent, CAMERA_PIC_REQUEST);更多細節see here

相關問題