1

タイトルに示されているように、アプリに画像をアップロードするオプションがあります。 2つのオプションがあります:新しい画像をクリック&ギャラリーから選択してください。 ギャラリーの選択は、このコードを使用するすべてのデバイス上で正常に動作している:Androidで画像を選択/クリックする適切な解決方法

Intent in = new Intent(); 
in.setType("image/*"); 
in.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(in, getString(R.string.selectpicture)), 100); 

問題がClick a new pictureです。

画像を取得するために、デバイスにインストールされている他のカメラアプリを使用したいと思います。 このコードは、ユーザーのクリックを指定されたパスに保存する必要があります。

Intent m_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
imageUri = getImageUri(); 
m_intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); 
startActivityForResult(m_intent, REQUEST_IMAGE_CAPTURE); 

は、しかし、何が起こるかはEXTRA_OUTPUTは、すべてのカメラのアプリで尊敬されていない、です。

また、メモリが不足していると、私のアプリがシステムによって殺され、状況がより複雑になります。

これで、ユーザーが新しい画像をクリックしてアプリ内の画像パスを取得できるようにするにはどうすればよいですか? サードパーティ製のライブラリを使用する方が良い場合、どちらが信頼できるのですか?

答えて

2

EXTRA_OUTPUTはすべてのカメラアプリで尊重されていません。

サードパーティ製のアプリケーションに何かを委任すると、いつでも問題が発生する可能性があります。

また、メモリが不足していると、私のアプリがシステムによって殺され、状況が複雑になります。

とにかくこれを処理する必要があります。 EXTRA_OUTPUTに入れた値を、保存されたインスタンスの状態Bundleに保存します。

ユーザーが新しい画像をクリックしてアプリ内の画像パスを取得できるようにするにはどうすればよいですか?

あなたはACTION_IMAGE_CAPTUREに固執したい場合、私はこのトリアージといいと思う:

  • 画像は、あなたがEXTRA_OUTPUTに提供した場所に存在する場合、場合、それを

  • を使用0でない場合は、getData()IntentonActivityResult()にあり、Urinullではない)が返されます。それを使用してください(本当にFileが必要な場合はContentResolverUriopenInputStream()と、独自のファイルに内容)

  • どちらも真でない場合、およびgetParcelableExtra("data")をコピーするには、それらのどれもが真でない場合Bitmapファイルに

  • 、提案することを保存し、値を返します。別のカメラアプリを取得するには、ユーザーに、おそらくあなたがしようとした

かの作品を知っているものにそれらを指して、直接またはmineのようなライブラリを使用して、画像を自分で取ります。

関連する問題