2013-08-02 9 views
8

私は、カメラを使って写真を撮った後、クロッピングのためにcom.android.camera.action.CROPを使用していました。Androidのjelly bean 4.3ではcom.android.camera.action.CROPを使用できませんか?

以下は私のコードで以前は4.3よりも前に動作していました。 (ギャラリーは作物とのデフォルトであるため)

Intent cropIntent = new Intent("com.android.camera.action.CROP"); 
         cropIntent.setType("image/*"); 
         cropIntent.putExtra("crop", "true"); 
         cropIntent.putExtra("aspectX", 1); 
         cropIntent.putExtra("aspectY", 1); 
         cropIntent.putExtra("outputX", Conf.getInt("IMAGE_WIDTH")); 
         cropIntent.putExtra("outputY", Conf.getInt("IMAGE_HEIGHT")); 
         cropIntent.putExtras(extras); 
         startActivityForResult(cropIntent, CROP_REQUEST_CODE); 

は、しかし、今アンドロイド作物のアクションがギャラリーに表示されますので、この切り出し方法は、(写真はギャラリーに保存されません)失敗しました。

この問題の解決方法を知っている人はいますか?私はカメラ以前尋ねた同様の質問から答えをコピー

+1

このライブラリを含める:https://github.com/lvillani/android-cropimage – g00dy

+1

作物法についてはこちらをご覧ください - > http://stackoverflow.com/questions/17930577/android-4- 3-crop-gallery-resultcode-cancel – g00dy

答えて

9

から撮影した写真に作物を使用することができますどこに...

あなたはこの1つだけのようなライブラリを使用して考えがあります:

GitHubLink

私はcom.android.camera.action.CROPが電話とは異なる動作をすることがあり、いつも利用できるとは限らないことがわかっているので、あなたがそれをリリースしようとするといくつか問題を引き起こす可能性があります。

UPDATE:

私は、Android 4.3で、上記のライブラリをテストして、それが問題なく動作します。ライブラリをプロジェクトに追加するだけです。

あなたはその後、非常によく似た方法であなたの方法を書くことができ

:一部4.3デバイスに対して、

private void performCrop(Uri picUri) { 
//you have to convert picUri to string and remove the "file://" to work as a path for this library 
String path = picUri.toString().replaceAll("file://", ""); 
try { 
    int aspectX = 750; 
    int aspectY = 1011; 

    Intent intent = new Intent(this, CropImage.class); 
    //send the path to CropImage intent to get the photo you have just taken or selected from gallery 
    intent.putExtra(CropImage.IMAGE_PATH, path); 

    intent.putExtra(CropImage.SCALE, true); 

    intent.putExtra("aspectX", aspectX); 
    intent.putExtra("aspectY", aspectY); 

    intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCurrentPhotoPath))); 

    startActivityForResult(intent, CROP); 
} 
catch (ActivityNotFoundException anfe) { 
    String errorMessage = "Your device doesn't support the crop action!"; 
    Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); 
    toast.show(); 
} 
+0

プロジェクトをAndroid Studioのライブラリとしてどのように追加しますか? –

+0

libaryは、あなたがアプリケーション用にセットメモリを使用することのみを許可します。したがって、大きな解像度の画像をトリミングすることはできません。ここに表示されている4.3の標準アンドロイドインテントを使用することができますhttp://stackoverflow.com/a/19435016/1499064 –

+0

@JohnBaleメインディレクトリの下にlibsフォルダを作成してbuild.gradleファイルに追加する必要があります – Ankit

1

よる
@commonsware 's postこの意図はAOSP camera app基づいているか、ターゲットデバイスで使用できない可能性があり、それはかもしれません何かのために働くが、それはない。

もっと良い方法は、オープンソースライブラリを使用することです。at Android arsenal
(それらもAOSPに基づいていないことを確認してください)。

+0

「一部のデバイス」では動作しないという証拠は誰にもありますか?また、ここでどのデバイスについて話していますか?サムスン、HTC? – John61590

0

私はいくつかのコッパーを試しました。特に、commonswareによって参照されるものは、あまり良好に維持されない。例えば、メタ情報内の回転データで撮影された写真は、十分に回転されていない。私はこれを見つけました:https://android-arsenal.com/details/1/3487とその偉大な。注意:アクションバーのテーマでアクティビティを追加してください!

関連する問題