相关疑难解决方法(0)

Android相机意图

我需要将一个意图推送到默认的相机应用程序,使其拍摄照片,保存并返回URI.有没有办法做到这一点?

android android-camera android-camera-intent

91
推荐指数
3
解决办法
13万
查看次数

在Android中使用相机手电筒

我正试图在小部件中使用相机LED手电筒.我已经找到了关于这个主题的几个主题(即后面提到的那个 ......),现在我正试图控制灯光使用:

Camera cam = Camera.open();     
Parameters p = cam.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
cam.setParameters(p);
cam.release();
Run Code Online (Sandbox Code Playgroud)

在AndroidManifest.xml中尝试了不同的权限,目前我有:

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-feature android:name="android.hardware.camera.flash" />
Run Code Online (Sandbox Code Playgroud)

我正在Galaxy Tab上测试这个,因为我手头没有任何其他Android设备:灯没亮.所以我现在有几个问题:

  1. 有没有办法测试仿真器中的led灯行为?
  2. 我在这里做错了吗?
  3. 根据这个处理相同问题的问题,它在Galaxy Tab上的工作方式不同.怎么样?
  4. 最后,如果它的工作方式不同,我开始怀疑它是否仅仅是Galaxy Tab或其他设备是否也使用不同的方法.那时很难测试,对我来说似乎很奇怪.

感谢您的任何见解!

顺便说一句,我很快就通过快速设置进行了测试,这里提到了几次.手电筒也不能用于快速设置.

请注意,Galaxy Tab stil使用android 2.2.我看到2.2和2.3之间有一些变化.

评论:我知道它必须以某种方式工作,因为我发现市场上的其他应用程序与Galaxy Tab完美配合.

评论2:如果我设置了cam.setParameters(p); 并使用getFlashMode()直接向相机询问当前状态,它正确返回FLASH_MODE_TORCH.但是,如果我释放相机并重新打开它,它将返回FLASH_MODE_OFF.这几乎就像Camera对象知道了请求,但并没有真正将它传递给硬件!?

-

康斯坦丁评论后,我删除了cam.release(); 部分.他是对的,如果你松开相机,设置就不会持续存在.如果再次使用cam.open(),您将获得一个关闭灯的新实例.尽管如此,光还没有在星系标签上工作.所以,如果你试图通过一个小部件来控制它,我想很难保持亮点.一旦后台服务完成,相机对象就会自动释放,因此灯会再次关闭.我的问题仍然存在,特别是为什么相机不能在一开始就打开.

android android-camera flashlight

53
推荐指数
4
解决办法
8万
查看次数

在Android中使用相机活动

如果您想使用使用原生Android相机的内置相机活动,只需执行以下操作即可.

Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);   
        this.startActivityForResult(camera, PICTURE_RESULT);
Run Code Online (Sandbox Code Playgroud)

你想从你展示的漂亮相机中取回图像 - 但是如何?

java camera android android-activity

35
推荐指数
1
解决办法
2万
查看次数

Android上的相机示例

我想写一个活动:

  1. 显示相机预览(取景器),并具有"捕获"按钮.
  2. 按下"捕获"按钮时,拍摄照片并将其返回到调用活动(setResult()&finish()).

是否有适用于每台设备的完整示例?链接到一个简单的开源应用程序拍照将是理想的答案.


我的研究到目前为止:

这是一个常见的场景,有很多问题和教程.

主要有两种方法:

  1. 使用android.provider.MediaStore.ACTION_IMAGE_CAPTURE事件.看到这个问题
  2. 直接使用Camera API.请参阅此示例此问题(包含大量参考).

方法1本来是完美的,但问题是每个设备上的意图实现不同. 在某些设备上它运作良好.但是,在某些设备上,您可以拍照,但它永远不会返回到您的应用.在某些设备上,启动意图时没有任何反应.通常它还将图像保存到SD卡,并且需要存在SD卡.每个设备上的用户交互也不同.

方法2的问题是稳定性.我尝试了一些例子,但我设法阻止相机在某些设备上工作(直到重启)并完全冻结另一台设备.在另一台设备上捕捉工作,但预览保持黑色.

我会使用ZXing作为示例应用程序(我经常使用它),但它只使用预览(取景器),并且不拍任何照片.我还发现,在某些设备上,ZXing在光照条件改变时没有自动调整白平衡,而原生相机应用程序正确地做到了(不确定是否可以修复).


更新:

有一段时间我直接使用了相机API.这提供了更多控制(自定义UI等),但我不建议任何人.我会在90%的设备上工作,但是每次都会发布一个新的设备,但是会遇到不同的问题.

我遇到的一些问题:

  • 处理自动对焦
  • 处理闪光灯
  • 带前置摄像头,后置摄像头或两者的支持设备
  • 每个设备都有不同的屏幕分辨率,预览分辨率(并不总是与屏幕分辨率匹配)和图像分辨率的组合.

所以一般来说,除非没有别的办法,否则我不建议去这条路线.两年后,我通过自定义代码转储并切换回基于Intent的方法.从那时起,我的麻烦就少了很多.我过去在基于意图的方法中遇到的问题可能只是我自己的无能.

如果你真的需要走这条路,我听说如果你只支持Android 4.0+的设备会更容易.

camera android android-camera android-camera-intent

19
推荐指数
1
解决办法
4万
查看次数

如何使用Android上的MediaStore将数据从Camera保存到磁盘?

对于我的应用程序,我一直在使用我自己的Camera类来拍摄图像和我自己的数据库但很快就无法跟上变化,我决定使用Android内置的相机应用程序来完成这项工作,但是我似乎无法得到它来保存文件.我在这里错过了什么?该应用程序似乎保存文件,但它只是0字节.我查找了Camera应用程序的源代码,并在Extras中查找"输出"以保存文件.任何帮助将不胜感激.

Public class CameraTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button cameraButton = (Button) findViewById(R.id.cameraButton);
        cameraButton.setOnClickListener( new OnClickListener(){
            public void onClick(View v ){
                ContentValues values = new ContentValues();
                values.put(Images.Media.TITLE, "title");
                values.put(Images.Media.BUCKET_ID, "test");
                values.put(Images.Media.DESCRIPTION, "test Image taken");
                Uri uri = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, values);
                Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                intent.putExtra("output", uri.getPath());
                startActivityForResult(intent,0);
            }
        });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode== 0 && …
Run Code Online (Sandbox Code Playgroud)

camera android mediastore android-intent

10
推荐指数
2
解决办法
3万
查看次数