アンドロイド:私のアプリを「カメラアプリ」として登録する方法

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

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

7

2 答え

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


    
        
        
    

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

編集:

ビットマップを返す適切な方法は次のとおりです。

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));
}

また、Androidの組み込みのカメラアプリのソースコードです。

11
追加された
申し訳ありません、何かを忘れました - 私はちょうど質問を編集しました
追加された 著者 stoefln,
Extrasに大きな画像を置くことに問題はありませんか?画像への道を返すほうがいいのではないでしょうか?
追加された 著者 stoefln,
私のアプリが別のアプリから呼び出されたことをどのように知ることができますか?そしてあなたのコードをどこに置くのですか(ビットマップを返す)?
追加された 著者 stoefln,
@Dalmas、連絡先からカメラアプリを開くと、ContactアプリのプライベートディレクトリであるキャッシュディレクトリのURI(outputPath =/my_cache/ContactPhoto-IMG_20170412_094751.jp‌ g)が送信されます。この場合、私はできませんそのパスに画像を保存するには(Contactのプライベートディレクトリ - outputPath =/my_cache/ContactPhoto-IMG_20170412_094751.jpg)、この問題を解決する方法を教えてください
追加された 著者 Siddhpura Amit,
@Dalmas、詳細は下記をご確認くださいandroid "> stackoverflow.com/questions/43362604/…
追加された 著者 Siddhpura Amit,
私は私の答えを編集しました。
追加された 著者 Dalmas,
あなたは正しいです、私は私の答えをもう一度編集しました。
追加された 著者 Dalmas,

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

 
            
            
    

お役に立てれば!

3
追加された
申し訳ありません、何かを忘れました - 私はちょうど質問を編集しました
追加された 著者 stoefln,
それはあなたを助けましたか?
追加された 著者 Dimitris Makris,