我有一个简单的程序,将预览绘制Camera成一个SurfaceView.我正在尝试做的是使用该onPreviewFrame方法,每次将新帧绘制到SurfaceView该invalidate方法时调用该onDraw方法,以便执行应该调用该方法的方法.事实上,该onDraw方法正在被调用,但没有任何东西被打印(我猜相机预览正在覆盖我正在尝试绘制的文本).
这是SurfaceView我所拥有的子类的简化版本:
public class Superficie extends SurfaceView implements SurfaceHolder.Callback {
SurfaceHolder mHolder;
public Camera camera;
Superficie(Context context) {
super(context);
mHolder = getHolder();
mHolder.addCallback(this);
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
}
public void surfaceCreated(final SurfaceHolder holder) {
camera = Camera.open();
try {
camera.setPreviewDisplay(holder);
camera.setPreviewCallback(new PreviewCallback() {
public void onPreviewFrame(byte[] data, Camera arg1) {
invalidar();
}
});
} catch (IOException e) {}
}
public void invalidar(){
invalidate();
}
public void surfaceChanged(SurfaceHolder …Run Code Online (Sandbox Code Playgroud) 我正在为Android 2.1开发一个应用程序.我想让我的用户在我的应用程序中选择个人资料图片(我没有使用联系人框架).
理想的解决方案是启动一个使用户能够从图库中选择图像的意图,但如果没有合适的图像,则使用相机拍照(反之亦然,即允许用户拍照,但如果他们知道他们已经有了合适的图像,让他们进入画廊并选择所述图像).
目前我可以做其中一个但不能两个都做.
如果我使用MediaStore.ACTION_IMAGE_CAPTURE直接进入相机模式,则无法进入图库.
如果我使用Intent.ACTION_PICK直接进入图库,那么我可以选择一个图像,但是如果我单击相机按钮(在图库的右上角),则会触发新的相机意图.因此,拍摄的任何照片都不会直接返回给我的应用程序.(当然你可以按后退按钮退回到图库并从那里选择图像,但这是一个额外的不必要的步骤,并不是很直观).
那么有没有办法将两者结合起来,或者我是否必须提供一个菜单来从我的应用程序中做一个或另一个?看起来这将是一个常见的用例...当然我错过了什么?
在开发相机应用程序时,我遇到了一个异常,只有当我切换到其他应用程序(onPause()对于我的应用程序)时才会发生.
01-15 17:22:15.017: E/AndroidRuntime(14336): FATAL EXCEPTION: main
01-15 17:22:15.017: E/AndroidRuntime(14336): java.lang.RuntimeException: Method called after release()
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.hardware.Camera.setPreviewDisplay(Native Method)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.hardware.Camera.setPreviewDisplay(Camera.java:357)
01-15 17:22:15.017: E/AndroidRuntime(14336): at com.sora.cbir.yuki.image.leaf.CameraPreview.surfaceCreated(CameraPreview.java:32)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.SurfaceView.updateWindow(SurfaceView.java:551)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.SurfaceView.onWindowVisibilityChanged(SurfaceView.java:213)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.View.dispatchWindowVisibilityChanged(View.java:4075)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewGroup.dispatchWindowVisibilityChanged(ViewGroup.java:742)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewRoot.performTraversals(ViewRoot.java:858)
01-15 17:22:15.017: E/AndroidRuntime(14336): at android.view.ViewRoot.handleMessage(ViewRoot.java:1995)
01-15 17:22:15.017: …Run Code Online (Sandbox Code Playgroud) 我正在使用意图启动相机:
Intent cameraIntent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
getParent().startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
Run Code Online (Sandbox Code Playgroud)
和使用:
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
photoImage.setImageBitmap(thumbnail);
photoImage.setVisibility(View.VISIBLE);
Run Code Online (Sandbox Code Playgroud)
但它只是一个缩略图,我如何获得完整的位图?我知道我可以使用自己的Activity并使用:
Camera.PictureCallback()
Run Code Online (Sandbox Code Playgroud)
但无论如何使用Intent做到了吗?
谢谢!
编辑:
我也尝试过:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Uri uri = data.getData();
imageView.setImageURI(uri);
}
Run Code Online (Sandbox Code Playgroud)
它适用于从库中选择的照片,但对于相机意图,data.getData()返回null.
我用按钮创建了一个应用程序,并为该按钮编写了onClickListener.我已经尝试了几个示例代码示例,但没有一个有效.他们都带来了Android相机应用程序,不拍照.我想要一些代码可以放在我的onClickListener中,所以当我按下屏幕上的按钮时,会拍摄一张照片.
当我在Android活动中按下按钮时,如何让相机拍照?
我正在使用此代码,但遗憾的是它不起作用.
在用户拒绝摄像头访问后,我想让他们在下次尝试加载时再次使用摄像头(在这种情况下,它是使用摄像头视图的条形码扫描仪).我总是得到AVAuthorizationStatusDenied,然后granted总是自动返回,NO即使我在代码中再次要求它.
我的许多用户都在给我发电子邮件说"当我尝试条形码扫描时我的屏幕是黑色的",这是因为他们因某些原因拒绝了相机访问.我希望能够再次提示他们,因为很可能拒绝这是一个错误.
有可能这样做吗?
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
if(authStatus == AVAuthorizationStatusAuthorized)
{
NSLog(@"%@", @"You have camera access");
}
else if(authStatus == AVAuthorizationStatusDenied)
{
NSLog(@"%@", @"Denied camera access");
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if(granted){
NSLog(@"Granted access to %@", AVMediaTypeVideo);
} else {
NSLog(@"Not granted access to %@", AVMediaTypeVideo);
}
}];
}
else if(authStatus == AVAuthorizationStatusRestricted)
{
NSLog(@"%@", @"Restricted, normally won't happen");
}
else if(authStatus == AVAuthorizationStatusNotDetermined)
{
NSLog(@"%@", @"Camera access not determined. Ask for …Run Code Online (Sandbox Code Playgroud) 我正在尝试重新创建以下代码返回的条件AVAuthorizationStatusNotDetermined:
AVAuthorizationStatus authStatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
Run Code Online (Sandbox Code Playgroud)
但是,即使在删除并重新安装应用程序后,iPad似乎仍能记住相机权限,因此每次都会返回Authorized或NotAuthorized.知道如何重置权限以便返回NotDetermined吗?
谢谢阅读.
我已经看到其他应用程序可以从照片应用程序中导入最后一张照片以便快速使用,但据我所知,我只知道如何获取A图像而不是最后一张(最近的图像).谁能告诉我如何获取最后一张图片?
我刚刚设置了我的第一个离子2应用程序(我已经相当广泛地使用了离子1).我正在尝试使用离子原生相机预览插件.
设置很简单:
npm install -g ionic cordova
ionic start timesnap --v2
ionic platform add android
ionic platform add ios
ionic plugin add cordova-plugin-camera-preview --save
Run Code Online (Sandbox Code Playgroud)
然后我将示例代码复制并粘贴到about页面中:
import { CameraPreview, CameraPreviewRect } from 'ionic-native';
// camera options (Size and location)
let cameraRect: CameraPreviewRect = {
x: 100,
y: 100,
width: 200,
height: 200
};
// start camera
CameraPreview.startCamera(
cameraRect, // position and size of preview
'front', // default camera
true, // tap to take picture
false, // disable drag
true, …Run Code Online (Sandbox Code Playgroud) 我需要使用Java访问网络摄像头.这就是我想要做的
访问网络摄像头
现在用户可以看到网络摄像头正常工作,因为他的脸在屏幕上可见(听说有些图书馆没有显示网络摄像头的视频输出)
当用户单击"保存"按钮时,拍摄快照并保存
从很长一段时间以来,我已经尝试了很多方法来做到这一点.
如果图书馆只是做上面提到的,我甚至感到满意,因为这对我来说已经足够了.但我希望它也很简单.如果不使用DLL,真的很棒,因为它不是平台独立的.真的很感激,如果它可以检测相机,而不像VLCJ手动传递相机名称和其他信息(因为可能有数千个相机品牌,所以我不能创建其中的千元素列表).而且,我正在创建一个桌面应用程序,而不是Web应用程序.
如果你认识这样的图书馆,请好好告诉我.其他图书馆(可能不符合我的所有要求,但也符合基本要求)也欢迎.请帮忙