2011-12-18 15 views
7

私は自分のアプリがカメラアプリであることをアンドロイドに伝える方法を知っていたので、他のアプリは自分のアプリを起動して写真を撮ることができます。 など。 pixlr-o-maticを使って、ギャラリーから画像を選択することも、あなたが選んだカメラアプリから画像をリクエストすることもできます。android:自分のアプリを「カメラアプリ」として登録する方法

編集: 私はどのように呼び出し元のアプリケーションに画像を返しますか?

答えて

11

これはインテントフィルタで行われます。マニフェストに次のタグを追加します。

<activity android:name=".CameraActivity" android:clearTaskOnLaunch="true"> 
    <intent-filter> 
     <action android:name="android.media.action.IMAGE_CAPTURE" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

これで、ユーザーが写真を撮りたいときにアプリケーションがリストに表示されます。

EDIT:

ここでは、ビットマップを返すために適切な方法である:

Uri saveUri = (Uri) getIntent().getExtras().getParcelable(MediaStore.EXTRA_OUTPUT); 

if (saveUri != null) 
{ 
    // Save the bitmap to the specified URI (use a try/catch block) 
    outputStream = getContentResolver().openOutputStream(saveUri); 
    outputStream.write(data); // write your bitmap here 
    outputStream.close(); 
    setResult(RESULT_OK); 
} 
else 
{ 
    // If the intent doesn't contain an URI, send the bitmap as a Parcelable 
    // (it is a good idea to reduce its size to ~50k pixels before) 
    setResult(RESULT_OK, new Intent("inline-data").putExtra("data", bitmap)); 
} 

ます。また、内蔵Camera app source codeアンドロイドを確認することができます。

+0

申し訳ありません、何かについて忘れました - 私はちょうど質問を編集しました – stoefln

+0

私は私の答えを編集しました。 – Dalmas

+0

大きな画像を追加するときに問題はありませんか?画像への道を返すほうがいいのではないでしょうか? – stoefln

3

アクティビティにインテントフィルタを指定する必要があります。このフィルタは、アプリを起動して写真を撮ることができるように指定します。

<intent-filter> 
      <action android:name="android.media.action.IMAGE_CAPTURE" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 

希望します。

+0

あなたを助けましたか? –

+0

申し訳ありません、何かについて忘れました - 私はちょうど質問を編集しました – stoefln

関連する問題