我如何在 Android 上访问相机胶卷/照片? [英] how can i access the camera roll/Photos on Android?

查看:62
本文介绍了我如何在 Android 上访问相机胶卷/照片?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我很难找到在 Android 上单击按钮打开用户相机胶卷/照片库的方法.我正在寻找的解决方案包括访问相机胶卷/照片画廊,允许用户选择图像,将所选图像保存到文件,然后最后将该文件保存到数据库,例如 parse.com.请提前帮助并感谢您!

I am having difficulty finding a way to opening a users camera roll/photo gallery on a button click on Android. The solution I am looking for includes accessing the camera roll/photo galley, allowing the user to select an image, saving that selected image to a file, then lastly saving that file to a database such as parse.com. Please help and thank you in advance!

请参考以下链接.我希望实现类似于在 IOS 上找到的实现.https://drive.google.com/file/d/0B4jjwQsKhqZRcU1FX05xeThlS0U/view?usp=共享

Please refer to the link below. I would like for the implementation to be similar to the one found on IOS. https://drive.google.com/file/d/0B4jjwQsKhqZRcU1FX05xeThlS0U/view?usp=sharing

推荐答案

参考这个给定的代码.它完美地解决了您的问题.它正在调用图库并保存图像并再次显示.

Refer this given code. Its perfect to solve your problem. It is calling image gallery and also saving image and displaying it again.

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();
        }
    }
}

这篇关于我如何在 Android 上访问相机胶卷/照片?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆