0

カメラアプリから写真を撮ってメールに送信する必要があります。

私の問題は、カメラアプリケーションから写真を撮ったときにギャラリーに保存されないことです。関数getlastimageidを使用すると(カメラで撮影された最後の画像のアドレスが取得されます)、取得されなかった画像のアドレスが取得されます私のカメラアプリケーションによるものですが、カメラで最後に撮影された画像のIDを取ります。注: samsung mobile では正常に動作します。つまり、写真は自動的にギャラリーに保存されますが、他の写真には保存されません。

私のコードは

public class CameraProject extends Activity {

Button button;
Bitmap btm;
Bitmap thumbnail;
String filePath;
  File pic;
final static int CameraData = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_camera_project);
    button = (Button) findViewById(R.id.cont);


}


//start camera activity
public void camera(View v) {
    Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(i, CameraData);
            }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        btm = (Bitmap) extras.get("data");

    }
        if(resultCode == RESULT_OK)
        {
            //it moves to another activity
            Intent intent1=new Intent (CameraProject.this,INF.class);

            startActivity(intent1);


}
        else {
            //if discard it reopen camera activity
            Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i, CameraData);
        }

}

    public void exit(View v)
    {
    finish();
}

}

そして、カメラで撮影した最後の写真のイメージ ID を取得するために使用した関数は次のとおりです。

private int getLastImageId(){
    final String[] imageColumns = { MediaStore.Images.Media._ID, MediaStore.Images.Media.DATA };
    final String imageOrderBy = MediaStore.Images.Media._ID+" DESC";
    Cursor imageCursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, imageColumns, null, null, imageOrderBy);
    if(imageCursor.moveToFirst()){
        int id = imageCursor.getInt(imageCursor.getColumnIndex(MediaStore.Images.Media._ID));
         fullPath = imageCursor.getString(imageCursor.getColumnIndex(MediaStore.Images.Media.DATA));
        Log.d(TAG, "getLastImageId::id " + id);
        Log.d(TAG, "getLastImageId::path " + fullPath);
       imageCursor.close();
        return id;
    }else{
        return 0;
    }
} 
4

1 に答える 1

0
private void takeNewPicture() {

    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    ContentValues values = new ContentValues(3);

    values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg");
    cameraImagePath = getContentResolver().insert(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
    takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, cameraImagePath);
    startActivityForResult(takePictureIntent, CAMERA_REQUEST);
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data); 
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) { 

    String[] filePathColumn = { MediaStore.Images.Media.DATA };
    Uri imageFilePathUri = null;
    if (cameraImagePath != null) {
        Cursor imageCursor = getContentResolver().query(
            cameraImagePath, filePathColumn, null, null, null);
    if (imageCursor != null && imageCursor.moveToFirst()) {
        int columnIndex = imageCursor.getColumnIndex(filePathColumn[0]);
        String filePath = imageCursor.getString(columnIndex);
        imageCursor.close();
        imageFilePathUri = filePath != null ? Uri
                .parse(filePath) : null;
    }

   }


    }
}
于 2013-05-10T19:39:49.707 に答える