-1

我正在创建一个将调用相机意图的应用程序,并希望在拍摄的图像中添加经度和纬度。这可能吗?

意图 i = 新意图(MediaStore.ACTION_IMAGE_CAPTURE);
fileUri = Uri.fromFile(getOutputPhotoFile());
i.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);

i.putExtra("纬度", "11111");
i.putExtra("经度", "222");

startActivityForResult(i, CAPTURE_IMAGE_ACTIVITY_REQ );

4

2 回答 2

1

您正在使用相机应用程序,这对您的目的不利。因为您不能在相机应用程序上叠加任何对象。您只能从中获取图像。因此,您必须创建内置相机应用程序并将其用于您的目的。我举了一个使用内置摄像头的例子。

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<SurfaceView android:id="@+id/CameraView" android:layout_width="fill_parent"
android:layout_height="fill_parent"></SurfaceView>
</LinearLayout>

现在创建像这样实现 SurfaceHolder.Callback 的活动

import android.app.Activity;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
public class SnapShot extends Activity implements SurfaceHolder.Callback {
   SurfaceView cameraView;
   SurfaceHolder surfaceHolder;
   Camera camera;
   @Override
   public void onCreate(Bundle savedInstanceState)
   {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      cameraView = (SurfaceView) this.findViewById(R.id.CameraView);
      surfaceHolder = cameraView.getHolder();
      surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
      surfaceHolder.addCallback(this);
   }
   public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
   }
   public void surfaceCreated(SurfaceHolder holder) {
     camera = Camera.open();
     try
     {
        camera.setPreviewDisplay(holder);
     }
        catch (IOException exception)
     {
        camera.release();
     }
     camera.startPreview();
   }
   public void surfaceDestroyed(SurfaceHolder holder) {
   }
}
于 2013-09-26T05:37:45.017 回答
0

首先,您必须确保您正在启动的系统相机应用程序接受参数latitudelongitude,否则我认为它没有意义。
您需要构建您的自定义相机应用程序,这并不难实现。

于 2013-09-26T05:16:44.353 回答