当前位置:首页 > 代码 > 正文

相册Android2.2源代码(android相册开发)

admin 发布:2022-12-19 21:08 165


本篇文章给大家谈谈相册Android2.2源代码,以及android相册开发对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Android怎么调用系统相册将选中的图片设置为布局的背景,有没有案例或源码?

Android中调用系统相机来拍摄照片的代码,如下:

1、首先设置Uri获取判断以及相机请求Code

public final int TYPE_TAKE_PHOTO = 1;//Uri获取类型判断

public final int CODE_TAKE_PHOTO = 1;//相机RequestCode

2、调起系统相机

Intent takeIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

Uri photoUri = getMediaFileUri(TYPE_TAKE_PHOTO);

takeIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);

startActivityForResult(takeIntent, CODE_TAKE_PHOTO);

3、封装获取Uri代码

public Uri getMediaFileUri(int type){

File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "相册名字");

if (!mediaStorageDir.exists()) {

if (!mediaStorageDir.mkdirs()) {

return null;

}

}

//创建Media File

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());

File mediaFile;

if (type == TYPE_TAKE_PHOTO) {

mediaFile = new File(mediaStorageDir.getPath() + File.separator + "IMG_" + timeStamp + ".jpg");

} else {

return null;

}

return Uri.fromFile(mediaFile);

}

4、相机拍照完毕后获取返回数据,并在页面显示照片

@Override

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

super.onActivityResult(requestCode, resultCode, data);

switch (requestCode) {

case CODE_TAKE_PHOTO:

if (resultCode == RESULT_OK) {

if (data != null) {

if (data.hasExtra("data")) {

Log.i("URI", "data is not null");

Bitmap bitmap = data.getParcelableExtra("data");

imageView.setImageBitmap(bitmap);//imageView即为当前页面需要展示照片的控件,可替换

}

} else {

Log.i("URI", "Data is null");

Bitmap bitmap = BitmapFactory.decodeFile(fileUri.getPath());

imageView.setImageBitmap(bitmap);//imageView即为当前页面需要展示照片的控件,可替换

}

}

break;

}

}

特殊:

一般情况,以上代码在Android7.0以下,也就是api24时,运行是没有任何问题的。可是当targetSdkVersion变成24及其以上并且在android7.0(及以上版本)系统运行时,会抛出异常:FileUriExposedException。

哪位大虾有Android的源码?能不能共享一份?多谢

在eclipse/myeclipse中查看android的源代码

1. 下载源代码,地址:

2. 解压至SDK目录下。顺便把常用的版本对应的目录列下

android1.5 -------- android-3

android1.6 -------- android-4

android2.1-update1 -------- android-7

android2.2 -------- android-8

在对应的版本下新建sources目录,把对应的源代码解压至此。

如我的android2.2,解压至F:\android\sdk\android-sdk-windows\platforms\android-8\sources

3. 修改配置文件

在对应的android-x目录下,修改source.properties文件,修改后文件内容如下:

### Android Tool: Source of this archive.

#Thu Oct 28 12:36:29 CST 2010

Pkg.Desc=Android SDK Platform 2.2_r1

#Pkg.UserSrc=false

Pkg.UserSrc=true

Archive.Arch=ANY

Platform.Version=2.2

#Pkg.DescUrl=http\://developer.android.com/sdk/Pkg.DescUrl=sources

Archive.Os=WINDOWS

#Pkg.SourceUrl=https\://dl-ssl.google.com/android/repository/repository.xml

Pkg.SourceUrl=sources

Pkg.Revision=2

AndroidVersion.ApiLevel=8

至此,在ide中打开,即可通过Ctrl+鼠标点击查看对应类的源码,也可以直接从引用的jar包中打开。

求:android 获取系统相册图片并显示在当前页面的代码

先初始化;

注意自定义 的

private final String IMAGE_TYPE = "image/*";private final int IMAGE_CODE = 0;

private void setImage() {

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);    getAlbum.setType(IMAGE_TYPE);    startActivityForResult(getAlbum, IMAGE_CODE);}

这里使用Intent获得相册图片数据,并返回原来界面;

这里说明一下

startActivityForResult(getAlbum, IMAGE_CODE);

补充{

startActivityForResult与startActivity的不同之处在于:

1、startActivity( ) 

仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。

2、startActivityForResult( ) 

可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。

}

startActivityForResult(getAlbum, IMAGE_CODE);

这里采用startActivityForResult来做跳转,此处的IMAGE_CODE实质是0为一个依据,可以写其他的值,但一定要=0

然后重写onActivityResult用于接收刚刚得到的数据

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

Bitmap bm = null;    ContentResolver resolver = getContentResolver();    if (requestCode == IMAGE_CODE) {        try {

Uri originalUri = data.getData();            bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);            imgShow.setImageBitmap(bm);        } catch (IOException e) {

e.printStackTrace();        }

}

补充{

ContentProvider-----数据提供给第三方应用程序使用时使用

因为在Android系统里面,数据库是私有的。一般情况下外部应用程序是没有权限读取其他应用程序的数据。如果你想公开你自己的数据,你有两个选择:你可以创建你自己的内容提供器(一个ContentProvider子类)或者你可以给已有的提供器添加数据-如果存在一个控制同样类型数据的内容提供器且你拥有写的权限

}

这里是创建一个新的内容提供器,然后在Activity当中通过getContentResolver()可以得到当前应用的 ContentResolver实例

if (requestCode == IMAGE_CODE) {

resultCode为回传的标记这句话是在确认是否回传的是你所需要的;如果是就执行try;不然就执行catch (IOException e) {

e.printStackTrace();}先说这里当try语句中出现异常是时,会执行catch中的语句,IOException e也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;。printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。

try {

Uri originalUri = data.getData();    bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);    imgShow.setImageBitmap(bm);接收数据处理数据并显示照片。

然后进行测试。

另附源码:

MainActivity:

package com.example.administrator.myapplication1;import android.graphics.BitmapFactory;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import java.io.IOException;import android.net.Uri;import android.os.Bundle;import android.provider.MediaStore;import android.app.Activity;import android.content.ContentResolver;import android.content.Intent;import android.graphics.Bitmap;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.ImageView;public class MainActivity extends AppCompatActivity {    private final String IMAGE_TYPE = "image/*";    private final int IMAGE_CODE = 0;    private Button choose=null;    private ImageView imgShow;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        init();}    private void init() {       choose=(Button) findViewById(R.id.button1);        imgShow=(ImageView) findViewById(R.id.imgShow);        choose.setOnClickListener(listener);    }    private OnClickListener listener=new OnClickListener(){        @Override        public void onClick(View v) {

setImage();            }

};        private void setImage() {

Intent getAlbum = new Intent(Intent.ACTION_GET_CONTENT);            getAlbum.setType(IMAGE_TYPE);            startActivityForResult(getAlbum, IMAGE_CODE);        }    protected  void onActivityResult(int requestCode, int resultCode, Intent data) {

Bitmap bm = null;        ContentResolver resolver = getContentResolver();        if (requestCode == IMAGE_CODE) {            try {

Uri originalUri = data.getData();                bm = MediaStore.Images.Media.getBitmap(resolver, originalUri);                imgShow.setImageBitmap(bm);            } catch (IOException e) {

e.printStackTrace();            }

}

}

}

layout:activity_main.xml:

?xml version="1.0" encoding="utf-8"?LinearLayout xmlns:android=""    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"        Button            android:id="@+id/button1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:text="选择照相"            android:layout_marginRight="190dp"            android:layout_marginTop="8dp"            android:paddingBottom="2dp"            android:background="#aabbcc" /    ImageView        android:id="@+id/imgShow"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:layout_margin="15dip"        //LinearLayout

相册Android2.2源代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于android相册开发、相册Android2.2源代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/24207.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载