android:如何将我的应用注册为“相机应用”

时间:2011-12-18 20:33:17

标签: android

我想知道如何告诉android我的应用程序是一个相机应用程序,所以其他应用程序知道他们可以启动我的应用程序来获取图片。 例如。使用pixlr-o-matic,你可以从图库中选择一个图像,也可以从你选择的相机应用程序中请求它。

编辑: 如何将图片返回到调用应用程序?

2 个答案:

答案 0 :(得分:11)

这是通过intent-filters完成的。将以下标记添加到清单中:

<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>

现在,当用户想要拍照时,您的应用程序将出现在列表中。

编辑:

以下是返回位图的正确方法:

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内置Camera app source code

答案 1 :(得分:3)

您应该为您的活动指定一个Intent过滤器,指定您的应用可以开始拍照。

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

希望这有帮助!