Android相机意图片段

时间:2015-11-10 22:49:50

标签: android android-fragments android-intent camera navigation-drawer

我的第一个应用程序出了问题! 我的应用是导航抽屉。它有2个碎片,我在这里显示不同的东西。 - 用户片段,其中显示用户的信息 - 操作屏幕,用户可以使用相机拍照。

在用户片段中我没有任何问题,但在相机片段中我有很多问题!

我做了一个片段,其中有一个按钮和一个imageview(camera_image.xml)

并且,java目录中的CameraImage.java。

然后,放一个代码:

CameraImagen.java:

public class CameraImage extends Fragment {

private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 1888;
Button button2;
ImageView imageView2;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    final View rootView = inflater.inflate(R.layout.camera_image,
            container, false);

    button2 = (Button) rootView.findViewById(R.id.button);
    imageView2 = (ImageView) rootView.findViewById(R.id.imageview);

    button2.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent,
                    CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

        }
    });

    return rootView;

}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {

            Bitmap bmp = (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream stream = new ByteArrayOutputStream();

            bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();

            // convert byte array to Bitmap

            Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0,
                    byteArray.length);

            imageView2.setImageBitmap(bitmap);

        }
    }
}
}

camera_image.xlm

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.diegoperez.myfirstapp.CameraImage">

<!-- TODO: Update blank fragment layout -->
<TextView android:layout_width="match_parent" android:layout_height="match_parent"
    android:text="@string/hello_blank_fragment" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button2"
    android:layout_gravity="center_horizontal|bottom" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/imageView2"
    android:layout_gravity="center" />

在Manifest.xlm中,我添加:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

在导航抽屉java类中,我添加:

CameraImage fragment = new CameraImage();
        FragmentManager fragmentManager = getSupportFragmentManager();
        fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();

在camera_image.java中我有这个问题:

Error

然后我试着修改这个.java,我写了这个:

public class CameraImage extends Fragment {

private static final int CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE = 1888;
Button button2;
ImageView imageView2;


public CameraImage() {
    // Constructor vacío
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.camera_image, container, false);

    return rootView;
}



@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE) {
        if (resultCode == Activity.RESULT_OK) {

            Bitmap bmp = (Bitmap) data.getExtras().get("data");
            ByteArrayOutputStream stream = new ByteArrayOutputStream();

            bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byte[] byteArray = stream.toByteArray();

            // convert byte array to Bitmap

            Bitmap bitmap = BitmapFactory.decodeByteArray(byteArray, 0,
                    byteArray.length);

            imageView2.setImageBitmap(bitmap);

        }
    }
}

public void tomar_foto (View view){
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);
}
}

应用程序运行,我可以使用按钮打开片段,但是当我按下它时,应用程序崩溃并关闭它。

我需要帮助......两天有这个问题! 非常感谢!

1 个答案:

答案 0 :(得分:1)

你导入了:

import android.view.View;

import android.view.View.OnclickListener

还尝试更改此onClickListener()

button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(intent,
                CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE);

}
});