我正在尝试让我的应用程序为新的Android M权限更改做好准备,并发现了一些奇怪的行为.我的应用程序使用相机意图机制允许用户从相机获取图片.但是在另一个活动中需要使用具有Camera权限的摄像头本身(因为需要这个的库依赖card.io).
但是,当我尝试启动Camera意图时,只需要相机意图的活动中的M我看到以下崩溃(如果我从Manifest中删除了Camera权限,则不会发生这种情况),
> 09-25 21:57:55.260 774-8053/? I/ActivityManager: START u0
> {act=android.media.action.IMAGE_CAPTURE flg=0x3000003
> pkg=com.google.android.GoogleCamera
> cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity
> (has clip) (has extras)} from uid 10098 on display 0 09-25
> 21:57:55.261 774-8053/? W/ActivityManager: Permission Denial: starting
> Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3000003
> pkg=com.google.android.GoogleCamera
> cmp=com.google.android.GoogleCamera/com.android.camera.CaptureActivity
> (has clip) (has extras) } from null (pid=-1, uid=10098) with revoked
> permission android.permission.CAMERA 09-25 21:57:55.263 32657-32657/?
> E/ResolverActivity: Unable to launch as uid 10098 package
> com.example.me.mycamerselectapp, while running in android:ui 09-25
> …Run Code Online (Sandbox Code Playgroud) android android-camera android-camera-intent android-permissions android-6.0-marshmallow
我正在构建一个应用程序,我希望通过默认的相机活动捕获图像并返回到我的活动并在ImageView中加载该图像.问题是相机活动总是返回null.在我的onActivityResult(int requestCode, int resultCode, Intent data)方法中,我得到数据null.这是我的代码:
public class CameraCapture extends Activity {
protected boolean _taken = true;
File sdImageMainDirectory;
Uri outputFileUri;
protected static final String PHOTO_TAKEN = "photo_taken";
private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.cameracapturedimage);
File root = new File(Environment
.getExternalStorageDirectory()
+ File.separator + "myDir" + File.separator);
root.mkdirs();
sdImageMainDirectory = new File(root, "myPicName");
startCameraActivity();
} catch (Exception e) {
finish();
Toast.makeText(this, "Error occured. Please try again …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Android 1.5应用程序,它在启动后启动.这是一个Service,应该拍照没有预览.此应用程序将记录某些区域的光密度.我能够拍照,但照片是黑色的.
经过长时间的研究,我遇到了一个关于它的bug线程.如果您不生成预览,则图像将为黑色,因为Android相机需要预览才能设置曝光和对焦.我创建了一个SurfaceView和听众,但onSurfaceCreated()事件永远不会被解雇.
我想原因是,表面没有在视觉上创造.我还看到了静态调用相机的一些例子,MediaStore.CAPTURE_OR_SOMETHING它们拍摄照片并用两行代码保存在所需的文件夹中,但它也没有拍照.
我是否需要使用IPC并bindService()调用此功能?或者是否有另一种方法来实现这一目标?
我正在尝试控制Android相机在肖像应用程序中拍照,但是当我保存图片时,它是在风景中.我用setCameraDisplayOrientation()方法将图像旋转了90个等级 ,但是不起作用.
然后我发现这个职位,但TAG_ORIENTATIONIS 0(不确定).如果我捕获此值并应用旋转值,则也不起作用.
我如何拍摄肖像并以良好的方向保存?
/** Initializes the back/front camera */
private boolean initPhotoCamera() {
try {
camera = getCameraInstance(selected_camera);
Camera.Parameters parameters = camera.getParameters();
// parameters.setPreviewSize(width_video, height_video);
// parameters.set("orientation", "portrait");
// parameters.set("rotation", 1);
// camera.setParameters(parameters);
checkCameraFlash(parameters);
// camera.setDisplayOrientation( 0);
setCameraDisplayOrientation(selected_camera, camera);
surface_view.getHolder().setFixedSize(width_video, height_video);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width_video, height_video);
surface_view.setLayoutParams(lp);
camera.lock();
surface_holder = surface_view.getHolder();
surface_holder.addCallback(this);
surface_holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
setPreviewCamera();
} catch (Exception e) {
Log.v("RecordVideo", "Could not initialize the Camera");
return false;
}
return true; …Run Code Online (Sandbox Code Playgroud) 我想在相机保持不动时自动对焦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设备:灯没亮.所以我现在有几个问题:
感谢您的任何见解!
顺便说一句,我很快就通过快速设置进行了测试,这里提到了几次.手电筒也不能用于快速设置.
请注意,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(),您将获得一个关闭灯的新实例.尽管如此,光还没有在星系标签上工作.所以,如果你试图通过一个小部件来控制它,我想很难保持亮点.一旦后台服务完成,相机对象就会自动释放,因此灯会再次关闭.我的问题仍然存在,特别是为什么相机不能在一开始就打开.
我目前正致力于手电筒开/关.我收到此错误java.lang.RuntimeException: Fail to connect to camera service我不知道为什么会发生此错误.我提到了许多解决方案,但我的问题仍未解决.当手电筒打开时,不会发生错误,但是当手电筒关闭时则会发生错误.
我的代码主要代码.
我的清单许可:
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus"/>
Run Code Online (Sandbox Code Playgroud) 如果您的Android应用使用设备的相机拍照,然后调整它的大小(这是很常见的,以减少上传大小),你可能没有意识到,这个调整操作条的EXIF元数据.
这可能会导致问题,尤其是当相关设备依赖"方向"标签正确显示图像时.
不同的Android设备以不同的方式处理相机/图像旋转 - 我信赖的'Nexus One似乎总是在捕获后立即旋转图像,因此文件的本机内容在查看时始终是"直立的".然而,其他设备(特别是我测试中的三星手机)不会旋转图像文件的内容 - 而是设置exif'Orientation'标签.无论何时稍后显示图像,相关图像代码都应检测到方向"标签"的存在并适当地旋转图像.但是如果您对图像进行了任何位图处理并将其保存到新文件中,那么所有exif数据都将丢失.
除了Orientation数据之外,您还可能会丢失其他有价值的元数据,例如品牌/型号等.
这使我困惑了几个星期(图像在电话库中显示时显示正常,但随后到达我的服务器时方向错误且没有明显的元数据).我在这里添加这个自我提问来帮助别人.这篇博客文章非常有用:
http://vikaskanani.wordpress.com/2011/07/17/android-re-size-image-without-loosing-exif-information/
我注意到android.media.effect开发人员可以在api级别17中使用.还有一个示例'Helloeffect'供开发人员渲染.但是,样本专注于图片.我读了效果类的文件,发现它必须对GL纹理应用效果.我是新手opengl,我想对相机拍摄的视频帧应用效果.
任何人都可以给我一些提示吗?谢谢!
我正在尝试将Camera App存储到我的内部存储器中.我也理解第三方应用程序无法访问我的应用程序的内部存储,但我们可以通过公开内部目录来实现FileProvider.我在这里遵循了指南:
我AndroidManifest.xml用以下方式指定我:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.stackoverflow.test.camerawithfileprovider" >
<application>
<activity
...
</activity>
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.stackoverflow.test.camerawithfileprovider.fileprovider"
android:exported="false"
android:grantUriPermissions="true" >
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider_path" />
</provider>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
我创建了一个名为xml文件file_provider_path.xml中/res/xml/:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="image_capture" path="public/" />
</paths>
Run Code Online (Sandbox Code Playgroud)
这就是我创建和调用Camera Intent的方法:
private static final int CAMERA_REQUEST_CODE = 5000;
private static final String CAMERA_FP_AUTHORITY = "com.stackoverflow.test.camerawithfileprovider.fileprovider";
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
Context context = MainActivity.this;
File imagePath = new File(context.getFilesDir(), …Run Code Online (Sandbox Code Playgroud)