Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android 2.2 SDK-Droid X摄像头活动不';我不能很好地完成_Java_Android_Mobile_Android 2.2 Froyo - Fatal编程技术网

Java Android 2.2 SDK-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

我注意到我在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.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调用,所以删除文件并从此活动返回

如果活动进行,则表示未创建文件,并且只有一个摄影机活动正在运行

希望能有帮助,它很难看,但对我有用