当前位置: 首页 > 面试题库 >

如何在Android上访问相机胶卷/照片?

蒙光华
2023-03-14
问题内容

我在通过Android按钮单击时无法找到打开用户相机胶卷/照片库的方法。我正在寻找的解决方案包括访问相机胶卷/照片厨房,允许用户选择图像,将所选图像保存到文件中,然后最后将该文件保存到诸如parse.com之类的数据库中。请帮助并提前感谢您!

请参考下面的链接。我希望实现类似于IOS上的实现。
https://drive.google.com/file/d/0B4jjwQsKhqZRcU1FX05xeThlS0U/view?usp=sharing


问题答案:

请参阅此给定的代码。完美解决您的问题。它正在调用图像库,还保存图像并再次显示它。

package br.liveo.ndrawer;



import android.content.Context;

import android.content.Intent;

import android.content.SharedPreferences;

import android.graphics.Bitmap;

import android.net.Uri;

import android.os.Build;

import android.os.Bundle;

import android.provider.MediaStore;

import android.support.v7.app.ActionBar;

import android.support.v7.app.ActionBarActivity;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.ImageView;

import android.widget.RelativeLayout;

import android.widget.TextView;



import java.io.IOException;



import br.liveo.navigationliveo.NavigationLiveo;



public class Profile extends ActionBarActivity {



    private RelativeLayout editLayout;

    private SharedPreferences preferences;

    private boolean edit = false;

    private ImageView profilePic;



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.profile);



        ActionBar actionBar = getSupportActionBar();

        actionBar.setHomeButtonEnabled(true);

        actionBar.setDisplayHomeAsUpEnabled(true);



        editLayout = (RelativeLayout) findViewById(R.id.profile_edit);

        editLayout.setVisibility(View.INVISIBLE);



        preferences = getApplicationContext().getSharedPreferences("User", Context.MODE_PRIVATE);

        String userName = preferences.getString("userName", "No User");

        String userEmail = preferences.getString("userEmail", getString(R.string.samplemail));

        String userPhoto = preferences.getString("userPhoto", "NULL");

        String userAbout = preferences.getString("userAbout", getResources().getString(R.string.about));



        TextView name = (TextView) findViewById(R.id.userName);

        name.setText(userName);



        TextView email = (TextView) findViewById(R.id.mail);

        email.setText(userEmail);



        TextView about = (TextView) findViewById(R.id.about);

        about.setText(userAbout);



        profilePic = (ImageView) findViewById(R.id.userPhoto);

        if (userPhoto.equals("NULL")) {

            profilePic.setBackgroundResource(R.drawable.ic_no_user);

        } else {

            //Bitmap bitmap = Profile.decodeBase64(userPhoto);

            Bitmap bitmap;

            try {

                bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), Uri.parse(userPhoto));

            } catch (IOException e) {

                profilePic.setBackgroundResource(R.drawable.ic_no_user);

                return;

            }

            profilePic.setImageBitmap(bitmap);

        }

    }



    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.profile_edit, menu);

        return true;

    }



    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

            case R.id.profile_edit:

                if (edit) {

                    saveProfile();

                    edit = false;

                    finish();

                } else {

                    item.setIcon(R.drawable.ic_action_accept);

                    edit = true;

                    profileEdit();

                }

                return true;

            default:

                finish();

                return super.onOptionsItemSelected(item);

        }

    }



    private void saveProfile() {

        TextView name = (TextView) findViewById(R.id.edit_name);

        TextView mail = (TextView) findViewById(R.id.edit_mail);

        TextView about = (TextView) findViewById(R.id.edit_about);



        SharedPreferences.Editor editor = preferences.edit();



        if (name.getText().toString().length() > 0)

            editor.putString("userName", name.getText().toString());

        if (mail.getText().toString().length() > 0)

            editor.putString("userEmail", mail.getText().toString());

        if (about.getText().toString().length() > 0)

            editor.putString("userAbout", about.getText().toString());



        editor.apply();

    }



    private void profileEdit() {

        RelativeLayout layout = (RelativeLayout) findViewById(R.id.profile_display);

        layout.setVisibility(View.INVISIBLE);

        editLayout.setVisibility(View.VISIBLE);

    }



    public void pickUser(View view) {

        Intent intent;



        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

            intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);

            intent.addCategory(Intent.CATEGORY_OPENABLE);

        } else {

            intent = new Intent(Intent.ACTION_GET_CONTENT);

        }



        intent.setType("image/*");

        startActivityForResult(intent, 3645);

    }



    @Override

    protected void onActivityResult(int requestCode, int resultCode, Intent resultData) {



        if (requestCode == 3645 && resultCode == NavigationLiveo.RESULT_OK && resultData != null) {



            Uri selectedImage = resultData.getData();

            profilePic.setImageURI(selectedImage);

            SharedPreferences preferences = getSharedPreferences("User", Context.MODE_PRIVATE);

            SharedPreferences.Editor editor = preferences.edit();

            editor.putString("userPhoto", selectedImage.toString());

            editor.apply();

        }

    }

}


 类似资料:
  • 我正在使用LWJGL和OpenGL 3.2为OpenGL编写java游戏引擎。每当移动鼠标旋转相机时,它都会添加滚动、俯仰和偏航。 摄像头代码 四元数代码

  • 问题内容: 以下代码加载也位于iCloud或流图像上的图像。如何将搜索范围限制为仅相机胶卷中的图像? 问题答案: 通过一些实验,我们发现了文档()中未列出的隐藏属性。基本上,您必须执行常规的提取请求,然后使用谓词从相机胶卷中过滤谓词。该值应为3。 样例代码:

  • 使用 Lightroom 的应用内相机在支持的设备上拍摄 DNG 和 HDR 照片,并在“专业”模式下调整快门速度、对焦和闪光灯等设置。 注意:基于 Android 的平板设备无法使用拍摄模块。 快速访问应用内相机 您可以使用以下任一方法启动应用内相机: 应用程序快捷键 “相机”Widget 应用程序快捷键 注意: 从 Lightroom for mobile (Android) 3.2 版开始,

  • 问题内容: 我从此链接克隆了一个有关Web浏览器上实时图像处理的项目:然后,我不允许我的浏览器访问我的相机。我收到此JavaScript警报: 嗯,网络摄像头没有启动。你有摄像头吗?您同意了吗?刷新后重试。并且允许按钮不会显示,就像我访问他的网站一样。 问题答案: 您是否正在通过localhost访问通过HTTP提供的网页?如果您通过访问它,Chrome会征求您使用相机的许可。 如果您直接打开网页

  • 在Windows10操作系统上,我正在运行用于运行Jenkins的Linux容器的docker。 我跟着cmd跑了 docker Run-P 8080:8080-P 50000:50000-V Jenkins_Home://var/Jenkins_Home Jenkins/Jenkins:LTS

  • 我正在开发Xamrin表单应用程序。在它里面,我正试图用一台相机拍摄多张照片,目的相同。不使用任何包? 为此,我跟随这个链接摄像机 在创建结束时 在这里,我只得到一张照片点击相机按钮,但我想捕捉更多的照片,我想要它的文件路径 在OnActivityResult中 但是也许它有一些限制,比如我们不能一次拍摄多张照片?有人知道如何捕获多张照片并将其绑定到listview吗?