节省了Android应用程序采取相机中的照片应用程序、节省、相机、照片

2023-09-04 04:17:06 作者:做最好的自己

我一直停留在这一段时间现在已经看过各种教程的帮助,但还没有成功。 任何帮助将是非常美联社preciated,我已经基本上使用的拍照功能我的应用程序拍照并显示它的preVIEW,但它不保存!

下面是包含我尝试了Java code得到它的运作按照教程:

 公共类Activity_Camera扩展活动实现View.OnClickListener {

    的ImageButton IB;
    ImageView的IV;
    我的意图;
    公共静态最终诠释cameraData = 0;
    BMP位图;

    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        。getMenuInflater()膨胀(R.menu.activity_main,菜单);
        返回true;
    }

    @覆盖
    公共布尔onOptionsItemSelected(菜单项项){
        开关(item.getItemId()){
        案例R.id.Info:

            意图I =新的意图(这一点,Help.class);
            startActivity(ⅰ);

            返回true;
        默认:
            返回super.onOptionsItemSelected(项目);
        }
    }

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_camera);
        初始化();
    }

    私人无效INITIALISE(){
        IV =(ImageView的)findViewById(R.id.ivPicReturn);
        IB =(的ImageButton)findViewById(R.id.ibTakePic);

        ib.setOnClickListener(本);
    }

    公共无效的onClick(视图v){
        开关(v.getId()){
        案例R.id.ibTakePic:
            I =新的意图(android.provider.MediaStore.ACTION_IM​​AGE_CAPTURE);
            startActivityForResult(ⅰ,cameraData);
            打破;
        }
    }

    @覆盖
    保护无效onActivityResult(INT申请code,INT结果code,意图数据){
        super.onActivityResult(要求code,因此code,数据);
        如果(结果code == RESULT_OK){
            捆绑额外= data.getExtras();
            BMP =(位图)extras.get(数据);
            iv.setImageBitmap(BMP);

            Toast.makeText(这一点,图片保存到:\ N+
                    data.getData(),Toast.LENGTH_LONG).show();
       }否则,如果(结果code == RESULT_CANCELED){
           //用户取消了图像采集
       } 其他 {
           //图像捕捉失​​败,提醒用户
       }
    }

    私有静态乌里getOutputMediaFileUri(整型){
          返回Uri.fromFile(getOutputMediaFile(类型));
    }
    私有静态文件getOutputMediaFile(整型){

        文件mediaStorageDir =新的文件(Environment.getExternalStoragePublicDirectory(
                  Environment.DIRECTORY_PICTURES),MyCameraApp);

        如果(!mediaStorageDir.exists()){
            如果(!mediaStorageDir.mkdirs()){
                Log.d(MyCameraApp,无法创建目录);
                返回null;
            }
        }
        文件媒体文件;
        如果(类型== cameraData){
            媒体文件=新的文件(mediaStorageDir.getPath()+文件分割符+
            IMG_+.JPG);
        } 其他 {
            返回null;
        }
        返回媒体文件;
    }
}
 

我已经列入清单文件中的所有留点权限。

解决方案

 文件imagesFolder =新的文件(Environment.getExternalStorageDirectory(),MyImages);
imagesFolder.mkdirs();
文件图像=新的文件(imagesFolder,image.jpg文件);
乌里uriSavedImage = Uri.fromFile(图像);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT,uriSavedImage);
 
窗口相机app下载 窗口相机最新版下载v0.5.2 IT168下载站

有一个看看这个链接。How在Android的挽救摄像机图像到特定的文件夹?

I have been stuck on this for a while now and have looked at various tutorials for help but have not yet succeeded. Any help would be much appreciated, i have essentially utilised the camera function in my app to take pictures and display a preview of it but it does not save!

Here is the java code containing my attempt to get it functioning according to tutorials:

public class Activity_Camera extends Activity implements View.OnClickListener {

    ImageButton ib;
    ImageView iv;
    Intent i;
    public static final int cameraData = 0;
    Bitmap bmp;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.Info:

            Intent i = new Intent(this, Help.class);
            startActivity(i);

            return true;
        default:
            return super.onOptionsItemSelected(item);
        }
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_camera);
        initialise();
    }

    private void initialise() {
        iv = (ImageView) findViewById(R.id.ivPicReturn);
        ib = (ImageButton) findViewById(R.id.ibTakePic);

        ib.setOnClickListener(this);
    }

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.ibTakePic:
            i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(i, cameraData);
            break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            bmp = (Bitmap) extras.get("data");
            iv.setImageBitmap(bmp);

            Toast.makeText(this, "Image saved to:\n" +
                    data.getData(), Toast.LENGTH_LONG).show();
       } else if (resultCode == RESULT_CANCELED) {
           // User cancelled the image capture
       } else {
           // Image capture failed, advise user
       }
    }

    private static Uri getOutputMediaFileUri(int type){
          return Uri.fromFile(getOutputMediaFile(type));
    }
    private static File getOutputMediaFile(int type){

        File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
                  Environment.DIRECTORY_PICTURES), "MyCameraApp");

        if (! mediaStorageDir.exists()){
            if (! mediaStorageDir.mkdirs()){
                Log.d("MyCameraApp", "failed to create directory");
                return null;
            }
        }
        File mediaFile;
        if (type == cameraData){
            mediaFile = new File(mediaStorageDir.getPath() + File.separator +
            "IMG_" + ".jpg");
        } else {
            return null;
        }
        return mediaFile;
    }
}

I have already included all the neccessary permissions within the manifest file.

解决方案

File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyImages");
imagesFolder.mkdirs();   
File image = new File(imagesFolder, "image.jpg");
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);

Have a look at this link.How to save images from Camera in Android to specific folder?