1

画像をキャプチャしてSDカードに保存したい。今は正常に動作しています。私の問題は、1) キャプチャ OK and Cancelボタンが使用可能になった後です。[OK] をクリックすると、画像を SD カードに保存するだけで済みます。

2) 方法には及びませんonActivityResult。私はクラスのonActivityResult中で自分のことを書きました。ActivityGroup

このコードは、ユーザーがカメラボタンをクリックすると、カメラを開いて保存します

       //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); } }

実際には から電話する必要がありonPhotoTaken ますonActivityResult。ユーザーがキャンセルをクリックした場合も、現在の私のコードに従って、情報をDBに保存します。画像がキャプチャされていません..

これは私のアプリの画像です:

ここに画像の説明を入力

これは、画像をキャプチャした後に表示されるボタンです。

ここに画像の説明を入力 誰かこの問題を整理してください..

前もって感謝します

4

2 に答える 2

1

次の回答を確認してください

ボタンSelect & があるとします ユーザーがボタンをクリックすると、カメラ画面が開きます。

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
            }

        }
    }
于 2012-04-17T12:04:00.753 に答える
0

問題は場所を呼び出すことです私は getParent().startActivityForResult(intent, CAMERA_PIC_REQUEST); もっと詳細を呼び出す必要がありますここを参照してください

于 2012-04-17T12:31:24.337 に答える