我试图将相机的图像用作动态壁纸的一部分.
在我声明的引擎中,我有这个代码:
public class Class extends WallpaperService
{
Camera cam;
@Override
public void onCreate()
{
super.onCreate();
cam = Camera.open();
}
//...
@Override
public Engine onCreateEngine()
{
return new CubeEngine(cam);
}
class CubeEngine extends Engine
{
Camera cam;
CubeEngine(Camera cam)
{
this.cam=cam;
}
//...
@Override
public void onDestroy()
{
if (cam != null)
{
cam.stopPreview();
cam.setPreviewCallback(null);
cam.release();
cam = null;
}
super.onDestroy();
}
@Override
public void onSurfaceChanged(SurfaceHolder holder, int format,
int width, int height)
{
try
{
cam.setPreviewDisplay(holder);
cam.startPreview();
}
catch …Run Code Online (Sandbox Code Playgroud) 我在主要活动中有这个代码:
package flash.light.pro;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.graphics.Color;
import android.hardware.Camera.Parameters;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.view.View.OnLongClickListener;
public class MainActivity extends Activity {
private boolean isBlack = false;
private boolean isLedOn = false;
private boolean supportsCamera = true;
private Camera camera;
final Parameters p = camera.getParameters();
protected void onStop() {
super.onStop();
if (camera != null) {
camera.release();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Button screen …Run Code Online (Sandbox Code Playgroud) 我不断尝试OutOfMemory异常尝试解码我的Android应用程序中的相机图像.处理这个问题有很多问题,但是我的情况特别奇怪,因为即使只是试图获得边界,我也会得到异常options.inJustDecodeBounds=true.
这是启动相机的代码:
protected void takePicture() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File image = new File(IMAGE_PATH, "camera.jpg");
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(image));
startActivityForResult(takePictureIntent, 0);
}
Run Code Online (Sandbox Code Playgroud)
这是触发异常的代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK ) {
String rawImageName = new String(IMAGE_PATH + "/camera.jpg");
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(rawImageName); // The exception is thrown here
.
.
.
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用非常高的采样率解码图像,但我仍然得到相同的异常:
options.inSampleSize = 20;
options.inJustDecodeBounds = false;
options.inPreferredConfig = Bitmap.Config.RGB_565;
Bitmap photo = …Run Code Online (Sandbox Code Playgroud) 我想拍一张长方形物体的照片.如果相机预览有一个边界矩形,我可以通过将对象放在边界框内来拍摄图片.我只需要图像中指定的(框内)区域.现在我开发了一个相机应用程序(使用Camera API Not INTENT),它可以拍照并存储照片,就像内置的相机应用程序一样.如何在相机预览上绘制矩形?以及如何在保存前进行裁剪?我正在使用android 2.2
当我尝试从相机或画廊获取图像时,我收到错误.这是logcat的一部分:
06-27 05:51:47.297: E/dalvikvm-heap(438): Out of memory on a 35295376-byte allocation.
06-27 05:51:47.312: E/dalvikvm(438): Out of memory: Heap Size=108067KB, Allocated=71442KB, Limit=131072KB
06-27 05:51:47.312: E/dalvikvm(438): Extra info: Footprint=108067KB, Allowed Footprint=108067KB, Trimmed=56296KB
06-27 05:51:47.312: E/PowerManagerService(438): Excessive delay when setting lcd brightness: mLcdLight.setBrightness(176, 1) spend 288ms, mask=2
06-27 05:51:48.052: E/dalvikvm-heap(4332): Out of memory on a 24023056-byte allocation.
06-27 05:51:48.057: E/dalvikvm(4332): Out of memory: Heap Size=63139KB, Allocated=40922KB, Limit=65536KB
06-27 05:51:48.057: E/dalvikvm(4332): Extra info: Footprint=63139KB, Allowed Footprint=63139KB, Trimmed=0KB
06-27 05:51:48.057: E/EmbeddedLogger(438): App crashed! Process: <my_app_name> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码打开相机应用程序:
Camera camera = Camera.open();
Parameters p = camera.getParameters();
p.setFlashMode(Parameters.FLASH_MODE_ON);
camera.setParameters(p);
camera.startPreview();
camera.release();
Run Code Online (Sandbox Code Playgroud)
它不会抛出任何错误,但它也不会打开相机.无论是否使用camera.release()选项我都试过了.有什么我做错了吗?
我尝试制作一个简单的相机应用程序,捕获图像并在imageview中查看图像:我在MainActivity中尝试了这段代码:
ImageView myImageView;
public void myButtonCamera (View view){
Intent cameraIntent = new Intent (android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, 10);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode,resultCode,data);
if (resultCode == RESULT_OK){
if (requestCode == 10){
Bitmap cameraCapture;
cameraCapture = (Bitmap)data.getExtras().get("data");
myImageView.setImageBitmap(cameraCapture);
}
}
}
Run Code Online (Sandbox Code Playgroud)
该应用程序工作并捕获图像,但它在ImageView中查看后模糊图像.我试图将ImageView的高度和宽度属性放到wrap_content测试应用程序之后,我注意到捕获的图像分辨率非常小!因为观看图像的尺寸非常小!
我在我的Android应用程序中使用ZBarScannerActivity.但我在设备上获得了一个小的表面视图.其实我想要全屏幕相机预览来扫描QR码.
任何帮助,将不胜感激.谢谢.这是ZbarScanner Activity的代码
package com.dm.zbar.android.scanner;
public class ZBarScannerActivity extends Activity implements Camera.PreviewCallback, ZBarConstants {
private static final String TAG = "ZBarScannerActivity";
private CameraPreview mPreview;
private Camera mCamera;
private ImageScanner mScanner;
private Handler mAutoFocusHandler;
private boolean mPreviewing = true;
static {
System.loadLibrary("iconv");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(!isCameraAvailable()) {
// Cancel request if there is no rear-facing camera.
cancelRequest();
return;
}
// Hide the window title.
//requestWindowFeature(Window.FEATURE_NO_TITLE);
//getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
mAutoFocusHandler = new Handler();
// Create and configure the ImageScanner; …Run Code Online (Sandbox Code Playgroud) 我正在申请我的相机功能.我正在捕捉图像并将其传递给另一个活动.我现在面临的问题是,当我在另一个活动展示形象就失去原来的结果(获得异样)出于某种原因.这就是我这样做的方式:
private void takePhotoFromCamera() {
if(ActivityCompat.checkSelfPermission(EnterDataView.this, Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED){
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
}else {
String[] permissionRequest = {Manifest.permission.CAMERA};
requestPermissions(permissionRequest, 8675309);
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK || resultCode != RESULT_CANCELED){
if(requestCode == CAMERA_REQUEST){
Bitmap mphoto = (Bitmap) data.getExtras().get("data");
Intent passPhoto = new Intent(this, Photo.class);
passPhoto.putExtra("byteArray",mphoto);
passPhoto.putExtra("Caller", getIntent().getComponent().getClassName());
startActivity(passPhoto);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在其他活动中获取图像:
if(getIntent().hasExtra("byteArray")) {
//ImageView _imv= new ImageView(this);
/*Bitmap _bitmap = BitmapFactory.decodeByteArray(
getIntent().getByteArrayExtra("byteArray"),0,getIntent().getByteArrayExtra("byteArray").length);*/
Intent intent_camera = getIntent();
Bitmap …Run Code Online (Sandbox Code Playgroud)