我需要创建一个服务应用程序,如果从内置相机应用程序中获取任何新图像,它总是查找和检索图像文件。
1)如果新图像是从内置相机应用程序中拍摄的,我的服务需要观看和拍摄图像
我们如何在我的服务中获取图像路径或图像数据。
我需要创建一个服务应用程序,如果从内置相机应用程序中获取任何新图像,它总是查找和检索图像文件。
1)如果新图像是从内置相机应用程序中拍摄的,我的服务需要观看和拍摄图像
我们如何在我的服务中获取图像路径或图像数据。
清单代码:
<receiver android:name=".pictureReceiver" >
<intent-filter android:priority="10000" >
<action android:name="com.android.camera.NEW_PICTURE"/>
<data android:mimeType="image/*"/>
</intent-filter>
</receiver>
接收代码:
@Override
public void onReceive(Context arg0, Intent arg1) {
String selectedImageUri = arg1.getData().getPath();
Log.d("TAG", "Received new photo:::"+selectedImageUri );
Log.d("TAG","file Path"+getRealPathFromURI(arg1.getData(),arg0));
}
public String getRealPathFromURI(Uri contentUri,Context context)
{
try
{
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = context.getContentResolver().query(contentUri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
catch (Exception e)
{
return contentUri.getPath();
}
}
仅供参考,建议从 ICS API 级别 14 开始收听官方广播:http: //developer.android.com/reference/android/hardware/Camera.html#ACTION_NEW_PICTURE。所以过滤“android.hardware.action.NEW_PICTURE”,并且仅当您还需要支持 pre-ICS 时才使用“com.android.camera.NEW_PICTURE”。