0

ACTION_IMAGE_CAPTUREインテントを開始してカメラを開くアクティビティがあります。

Intent intent = new Intent(
            android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

    SimpleDateFormat dateformat = new SimpleDateFormat("ddMMyy");


    File photo1 = new File(Environment
            .getExternalStorageDirectory(), imageName);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo1));
    startActivityForResult(intent, 5);

このインテントを開始すると、画像キャプチャ画面が開き、キャプチャボタンをクリックしてもアプリに戻らない場合があります(onActivityResult)。もう一度画像を撮影するように強制され、この画面が閉じないのは次の場合のみです。戻るボタンを押しました。

デバッグ時にOnActivityResultにブレークポイントを設定しましたが、このメソッドで停止しません。

4

3 に答える 3

0

これは、カメラまたはギャラリーを使用して画像を選択するオプションを提供し、画像をトリミングするオプションも提供するサンプルアプリケーションです。これがまさにあなたが望むものであることを願っています。

これを参照してください https://github.com/lorensiuswlt/AndroidImageCrop

そのオープンソースをダウンロードして探索してください。

于 2012-10-17T10:24:11.163 に答える
0

これは非常に遅いですが、ここでの問題は読み取り/書き込み権限がない可能性があります。私はまさにこの問題を抱えていました。それは、カメラアプリがアクセスできない自分のアプリフォルダーに画像ファイルを入れたいと思っていたことに関係していました。

安全のために、アプリ間でファイルを共有する場合はEnvironment.getExternalStoragePublicDirectory()、 の代わりに ,を使用することを検討してEnvironment.getExternalStorageDirectory()ください。

于 2014-07-25T15:11:34.157 に答える
0

これがカメラの意図のコードです。完全に機能します。使用してみてください。

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;

public class PlayMenuActivity extends Activity implements OnClickListener {

    Intent intent;
    ImageButton cameraBtn, galleryBtn, maleBtn, femaleBtn;
    static Bitmap photo;
    Dialog dialog;
    static String gender;
    MediaPlayer mp; 

    protected static final int PHOTO_PICKED = 0;
    private static final int CAMERA_REQUEST = 1337;
    private static final int SELECT_PHOTO = 100;
    private static final String TEMP_PHOTO_FILE = "tempPhoto.jpg";
    protected boolean circleCrop = true;
    private final static String TAG = "GetImageFromGalleryActivity";


    // values for scaling image
    protected int outputX = 320;
    protected int outputY = 480;
    protected int aspectX = 2;
    protected boolean scale = true;
    protected int aspectY = 3;
    protected boolean return_data = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("hello", "oncreate PlayMenu");
        setContentView(R.layout.play_menu_screen);//setting layout
        //Image Buttons on activity screen
        cameraBtn = (ImageButton) findViewById(R.id.cameraBtn_id);
        galleryBtn = (ImageButton) findViewById(R.id.galleryBtn_id);
        cameraBtn.setOnClickListener(this);
        galleryBtn.setOnClickListener(this);
        // sound played when button clicked
        mp = MediaPlayer.create(this, R.raw.click);



    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.cameraBtn_id:
            // camera intent for starting camera
            Intent cameraIntent = new Intent(
                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            cameraIntent.putExtra("crop", "true");
            cameraIntent.putExtra("aspectX", aspectX);
            cameraIntent.putExtra("aspectY", aspectY);
            cameraIntent.putExtra("outputX", outputX);
            cameraIntent.putExtra("outputY", outputY);
            cameraIntent.putExtra("scale", scale);
            cameraIntent.putExtra("category", "camera");
            startActivityForResult(cameraIntent, CAMERA_REQUEST);

            break;

        case R.id.galleryBtn_id:
            // calling GalleryActivity for picking image from gallery
            intent = new Intent(PlayMenuActivity.this, GalleryActivity.class);

            startActivity(intent);
            break;

        default:
            break;
        }

    }

    /* creates bitmap of the captured photo */
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        // Log.i("hello", "REQUEST cALL");
        //if a camera request is made and resultcode matches then bitmap is created
        if (requestCode == CAMERA_REQUEST || resultCode == Activity.RESULT_OK) {
            Log.i("hello", "REQUEST cALL");
            try {
                Log.i("hello", "Try Call");
                Bitmap bMap = (Bitmap) data.getExtras().get("data");//creating bitmap 


                photo = bMap;
                Intent intent = new Intent(PlayMenuActivity.this,
                        ShowActivity.class);
                intent.putExtra("category", "camera");//adding category selected ie camera
                startActivity(intent);

            } catch (Exception e) {
                Log.i("hello", "Exception" + e.getMessage());
            }

        } else {
            // Log.i("hello", "Else call");

            Toast.makeText(PlayMenuActivity.this, "Picture NOt taken",
                    Toast.LENGTH_LONG).show();
        }

    } // fn



}// class

お役に立てれば 。

于 2012-10-17T11:05:47.720 に答える