Java Android 2.2 SDK-Droid X摄像头活动不';我不能很好地完成
我注意到我在Droid X上调用的默认相机活动与我的Droid和Nexus one上的不同。在Droid和Nexus One上选择“OK”后,活动将完成-Droid X有一个“Done”按钮(它会将您带回相机,而不是完成活动),而到达我想要的屏幕的唯一方法是点击“back”按钮 以下是适用于Android 2.2/2.3但不适用于Droid X的类:Java Android 2.2 SDK-Droid X摄像头活动不';我不能很好地完成,java,android,mobile,android-2.2-froyo,Java,Android,Mobile,Android 2.2 Froyo,我注意到我在Droid X上调用的默认相机活动与我的Droid和Nexus one上的不同。在Droid和Nexus One上选择“OK”后,活动将完成-Droid X有一个“Done”按钮(它会将您带回相机,而不是完成活动),而到达我想要的屏幕的唯一方法是点击“back”按钮 以下是适用于Android 2.2/2.3但不适用于Droid X的类: package com.android.xxx; import java.io.File; import android.content.In
package com.android.xxx;
import java.io.File;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.Window;
public class CameraView extends MenusHolder {
protected String _path;
protected boolean _taken;
protected static final String PHOTO_TAKEN = "photo_taken";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.create_event_view);
/*
* save to sd
*/
File imageDirectory = new File(
Environment.getExternalStorageDirectory() + "/MyPath/");
imageDirectory.mkdirs();
/*
* temp image overwrites each time for space
*/
_path = Environment.getExternalStorageDirectory()
+ "/MyPath/temporary_image.jpg";
startCameraActivity();
}
protected void startCameraActivity() {
File file = new File(_path);
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(
android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, 0);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (resultCode) {
case 0:
setResult(5);
finish();
break;
case -1:
onPhotoTaken();
break;
}
}
protected void onPhotoTaken() {
_taken = true;
setResult(0);
finish();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putBoolean(CameraView.PHOTO_TAKEN, _taken);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
if (savedInstanceState.getBoolean(CameraView.PHOTO_TAKEN)) {
onPhotoTaken();
}
}
}
老兄。。。这只是一只虫子。我也有同样的问题,没有办法解决。它有时有效,有时无效。我向摩托罗拉的人寻求帮助,他们说不支持那些Android图像。伙计。。。这只是一只虫子。我也有同样的问题,没有办法解决。它有时有效,有时无效。我向摩托罗拉的人寻求帮助,他们说不支持那些Android图像。我用一个非常难看的解决方法解决了这个问题。我编写了两个函数来读取和写入SD卡中的文件(取自此处:) 然后,在onCreate函数中,我做了如下操作:
public void onCreate(Bundle savedInstanceState) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
super.onCreate(savedInstanceState);
if(readFile() == true)
{
File sd_path = Environment.getExternalStorageDirectory();
File f = new File(sd_path.getAbsolutePath(), "lock_camera_oncreate");
f.delete();
Intent intent = this.getIntent();
this.setResult(RESULT_OK, intent);
return;
}
createFile();
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCurrentImagePath)));
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}
setRequestedOrientation调用解决了在纵向模式下使用应用程序时的问题,但当启动相机时,您将手机置于横向模式,然后拍摄照片
然后,丑陋的读取文件检查是否存在一个lock\u camera\u oncreate文件,如果它是真的,
然后又发生了一个onCreate调用,所以删除文件并从此活动返回
如果活动进行,则表示未创建文件,并且只有一个摄影机活动正在运行
希望能有帮助,这很难看,但对我来说很有效:D我用一个非常难看的解决方法解决了这个问题。我编写了两个函数来读取和写入SD卡中的文件(取自此处:) 然后,在onCreate函数中,我做了如下操作:
public void onCreate(Bundle savedInstanceState) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
super.onCreate(savedInstanceState);
if(readFile() == true)
{
File sd_path = Environment.getExternalStorageDirectory();
File f = new File(sd_path.getAbsolutePath(), "lock_camera_oncreate");
f.delete();
Intent intent = this.getIntent();
this.setResult(RESULT_OK, intent);
return;
}
createFile();
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCurrentImagePath)));
startActivityForResult(cameraIntent, TAKE_PHOTO_CODE);
}
setRequestedOrientation调用解决了在纵向模式下使用应用程序时的问题,但当启动相机时,您将手机置于横向模式,然后拍摄照片
然后,丑陋的读取文件检查是否存在一个lock\u camera\u oncreate文件,如果它是真的,
然后又发生了一个onCreate调用,所以删除文件并从此活动返回
如果活动进行,则表示未创建文件,并且只有一个摄影机活动正在运行
希望能有帮助,它很难看,但对我有用