⑴ 求: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="http://schemas.android.com/apk/res/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>
⑵ 安卓源码怎么用 android应用开发详解 这本书里面18章(无线点餐系统)有源代码,用什么打开能详细说嘛
开发工具是 eclipse 可以免费下载
另外需要SDK (用来模拟手机)和ADT(eclipse开发android程序的插件)
还需要JDK (java环境)
这些安装好了 就可以看着你的书 一步一步操作了
书里的源码 可以导入eclipse中 eclipse可以帮助你编译和运行程序
具体的操作太繁琐 这里就是给你一个大概的思路 大概的理解 再看看书 也不是那么困难
⑶ 我有个安卓源码需要他的程序界面截图。。求大神帮我运行下
开发人员应当在学习并深入了解Android之后,在自己的软件中,将Android的优势发挥出来,同时通过一些手段去弥补Android 本身的缺陷或不足。下面来看一下Android拥有的特点吧: 与硬件交互非常方便,包括摄像头、GPS 等,都可以简单的操作。 拥有自己的运行时和虚拟机,优秀的内存管理能力。 提供丰富的界面控件供开发者使用,允许可视化开发,并保证Android平台下的应用程序界面一致。 提供轻量级的进程间通信机制。 支持无界面的后台服务类应用程序。 支持高效、快速的数据存取方式。 在这些特性的支持下,试图在Android下开发一个应用不会太过困难。事实上,一个稍有 Java经验的开发人员,都可以快速的上手进行 Android的开发。而开发的核心,一直以来也是围绕着Android手机几个大的特点来进行的,其中就包括了触摸屏、摄像头、GPS模块、互联网功能、语音输入、Google账户等。需要说的是,如果一位 J2ME 工程师想转行做Android,那么他将付出的代价比J2SE或J2EE工程师要大得多。毕竟Android所支持的是基本完整的J2SE的子集,反过来再看J2ME就会觉得它的功能太弱了。 除了Java外,还有许多语言支持Android 的开发,比较为人所熟知的有Scala,而作为 Android本身的底层语言,C/C++的作用也完全不可忽视。而目前的开源社区内,已经有一些牛人在尝试让更多的语言可以开发Android应用。比较有代表性的可能是Koushik Dutta,他已经解决了在Mono平台下,让Dalvik调用Mono 代码的问题。或许在不久的将来,.NET 下的所有语言,都有可能借助Mono跑在Android上,这是一件值得让人期待的事情。 语言已不是问题,那还有什么会成为问题?也许很多人会说“经验”。诚然,经验决定了一位开发人员能否快速地、流畅地完成开发工作,也决定了软件的鲁棒性,Bug的数量、等级和修正问题的返工次数。不过我认为,这些都不重要,哪怕是一个 Android 行业的新人,一边查询文档一边做开发,虽然效率会很低,但是一样能把项目做完。在 Android 下,开发技术几乎是没有瓶颈的。那么瓶颈在哪里呢?事实上,在用过很多软件后,就会发现,有很多软件并不好用。很多用户不愿意用某个软件,也并不是因为软件没有技术含量或是满足不了需求,原因很简单,就是不好用。 用户体验是凌驾于技术之上的,可以说,优秀的用户体验将可以起到事半功倍的效果,在一堆同类的软件中,下载量最大的,一定是让用户用着感觉最舒服的,哪怕它的功能并不比其他的产品出色,甚至略差一些。我见过很多开发人员,他们视技术为己任,一心只钻研技术,认为技术出色的软件,会受到用户的好评,甚至在一个手机游戏中,加入各种华丽炫目的3D效果。这些固然都不错,但是真正的用户却不会喜爱它们。在移动应用中,简洁明快才是用户希望看到的。试想一下,当用户在手机上玩一个RPG游戏,并被华丽的3D效果充斥了整个界面,那么他将完全无法着手进行下一个动作。诚然,华丽的画面是很容易吸引人,但是在这种华丽的背后,却会直接把用户和开发者自己领入一条深渊,再也无法回头,最终的结果就是,用户完全舍弃该款游戏,开发者或运营商也完全赚不到钱。 在移动平台开发的过程中,用户体验已经成为首要大事,只有聚焦在用户的设计,才有可能被用户所接受。下面来看一些典型的例子。 左图是经典的Windows Mobile 6.1的界面,从Windows Mobile推出的那天起,这个界面就一直被宣传成内容充实,包含常用所有功能的入口,非常贴合用户的实际需求。也许在当时,这样的界面确实能满足一定的需求,但是到了现在,这样的设计只能说是远离用户。每一项的高度都过小,因此需要使用笔来点击,或是使用指甲。位于右下角的三个图标,或许用指甲都很难点到,使用笔即多占用用户的一只手,体验是直线下降的。在用户希望连耳朵都解放的现在,多占用一只手是什么概念,这就意味着用户乘车时没有办法握紧扶手,或者没有办法拎着自己的包。另外,在手机操作时,拥有一只空闲着的手,就能有更多机会处理突发事件,占用用户的两只手实在是不应该的。可以说Windows Mobile的用户体验是非常差劲的,幸好微软在新的Windows Phone 7中,对界面做了巨大的改进,没有再犯过去的错误。 再来看看Android是如何做的,这个界面看起来简洁明了,和上面的Windows Mobile相比,可以说是毫不出彩,甚至在有些人的眼里,这个界面很丑陋。但它却是相当好用的,图标很大,图标的间距也很大。这就决定了用户可以使用指腹去进行点击的操作,并且点击的范围可以比较大,降低了点错的几率。 虽然屏幕点击的方式一定程度上也和屏幕的材质有关,比如电阻屏只能用笔或指甲,而电容屏允许使用指腹,有一些还可以支持多点触摸。对于普通用户来说,使用指腹比使用指甲显得更为常见,原因很简单,如果图标很大,那么用户会不自觉的使用指腹去点击,而如果图标很小,那么用户会屈起手指然后用指甲去戳屏幕。这个“屈起手指”的动作不能被大部分的用户所接受。因此电容屏会渐渐流行,而电阻屏会渐渐被淘汰,这完全是根据用户的体验,优胜劣汰,是一件非常符合进化论的事。 用户体验还不仅仅是界面上的那些事,作为手机来说,每一个特点都将成为用户体验可以挖掘的一部分。比如说是否有键盘、是否支持多点触摸等。有键盘的手机与无键盘的手机,用户在执机时用的手势必然不同,一个着重点在机身下半部分,即键盘上;而另一个着重点在整个屏幕上,换言之,手指可能在屏幕的任何一个位置活动。针对设备的具体情况来对应用进行设计也是很有必要的,目前Google为Android设计的按屏幕大小自动切换布局方式的框架非常有用,它改变了以往在程序的设计过程中,需要为每一种设备单独编译一个版本,或是仅对不同的屏幕做简单拉伸的情况。另外,在设计中,还需要考虑实际操作体验,比如放大一张图片,是使用放大按钮,还是使用多点触摸。这两种做法都很常见,但是在一个有此需求的应用中,却不能单独的使用某一种。比较好的做法是,在程序代码中,判断设备是否支持多点触摸,若不支持,可以显示一个放大按钮,而对于支持的,则在应用第一次启动时,弹出一个Toast提示,告诉用户可以多点触摸从而放大图片。 下面再说说应用界面布局的问题,来看下面两个截图。 这两个应用同为Android下的游戏机模拟器,上面的图是PS模拟器,可以看到虚拟按键的布局有些奇怪,特别是 L和R,一上一下非常不习惯。而右面的是GBA模拟器,可以看到它的按键中规中矩,用户马上就可以上手了。但是,从上手的角度来说,GBA模拟器的确简单,但是从实用的角度来说,PS模拟器做得更好。为什么呢?原因很简单,PS模拟器利用到了整个屏幕,而且虚拟按键的布局,防止了两只手打架,也防止了屏幕下半部分由于手指的原因完全不可见的问题。通过一段时间的习惯,PS 模拟器就可以被玩得很溜。而再看GBA模拟器,只利用到了一半的屏幕不说,而且还是纵向的,双手操作时,两只手很容易打架,相互干扰,要玩一些动作性稍强的游戏几乎不可能。虽然看起来直观易懂,但是这样的UI,是会被用户所舍弃的。 在移动平台上,到目前为止,用户依然没有固定的操作习惯,而软件的开发人员要做的事情,就是把用户往一个简单、明快的操作体验上引导,使他们更快的学会使用软件,并且让他们习惯、擅长某一种或几种操作。从某种意义上来说,苹果的设计人员手册已经很好的解决了问题,iPad已经做到了中老年人也可以轻松上手,甚至连猫都会玩。但是至少目前为止,还没有见到适用于Android的设计手册,开发人员或是软件厂商也都各按自己的理解去进行软件的设计,用户也被迫在使用不同的软件时,适应不同的风格。 在未来为期不短的一段时间内,Android上应用程序的用户体验将成为一个主要的研究点,特别是游戏类应用。由于Android上的某些限制,开发人员较难实现像PSP游戏那样的华丽效果,因此只能够在游戏本身的游戏性上下足工夫。当然了,等Android手机的性能再次大幅提升,电池容量再大幅提升后,可能会出现可以匹敌PSP游戏的华丽游戏,只是目前不应当过分考虑这些。 在我以前的一些文章也曾提到过,为移动平台做开发,应该尽可能的考虑程序的执行效率而不是架构,因为移动平台本身通常不会有多好的配置,在有限的配置下实现性能最佳化是非常重要的。从另一种角度上说,iPhone 能够用较低的配置来实现整机流畅运作,也是得益于较为严格地针对性优化,把硬件平台的性能完全发挥出来,这样做得到的结果是,iPhone的整体性能,看起来反而比一些更高配置的手机要好一些。 最后,再简单地说一下Android的开发与其他平台的开发有什么异同。我们知道不同的开发方式将对最终的结果产生不同的影响。在以往的经验中,各厂家的开发工具,都在往可视化方向发展,比如说微软的 Visual Studio,一代比一代强大,可视化程度越来越高。而苹果的Xcode也是一样,它建议用户完全使用可视化的方案来解决一个应用。这些固然很好,但是带来的问题也不小。举个简单的例子,有一个 Windows Mobile 的应用,上面有一个 ListBox,而你正试图为该 ListBox 添加一个图标,并试图按每一项的内容限定来改变文字颜色。能做到吗?当然能,但是过程却不简单,你必须经历复杂的自绘才能实现这一点。这也是常规的RAD开发中普遍遇到的问题,即开发人员不能方便地控制到应用的每一个细节。开发框架对API的封装在某种程度上提高了开发的效率,但是另一种程度上,它屏蔽了太多的细节,而这些细节有可能就是开发人员所需要的。 而Android虽然也拥有可视的开发环境,但是它非常弱,第三方的RAD方案迄今为止也依然显得虚弱无力,对于用惯了微软等公司出品的高级RAD环境的人来说,可能会充满了无奈,也可能充满了鄙视,这种可视化算什么呢?如果仅仅从开发人员的角度来看,有利也有弊,弊端很显然是开发效率不够高,而事实上,由于Android采用Java语言来进行开发,其开发效率本身就不会太高。而利的部分,可能是会被很多高级工程师所喜爱的,因为它是牺牲开发效率,来换取最大的可定制性的一个典范。也许有一些刚开始学习Android开发的朋友会觉得制作界面有种种的不便,但是只要深入地学习下去,就会觉得Android的界面实现方式是非常领先的。同样举出上面ListBox的例子,在Android下,就可以通过一组短小精悍的代码来自定义ListItem和相关Adapter以实现。 我想优秀的开发人员是应该完全放弃RAD的,在目前的环境下,RAD几乎没有什么作为,反而会成为应用分层的一个巨大的绊脚石。在RAD的环境下,要求一位开发人员对软件的每一个部分都面面俱到,这怎么可能呢?比如说软件界面就是应该交由UI专员去设计,数据库部分也应该交由相关的负责人去做,完全不可能由开发人员从头到尾一个人搞定。如果哪个老板真的雇用了一位超级开发人员来包办一切,那么除非那个人拥有100年的工作经验,不然的话项目做死就是活该。我想Android的开发框架已经很好地说明了这个问题,程序资源(包括图片、字符串、其他的外部数据等)和代码完全分离,各部分人员各司其职,完成整个项目,每个部分的人员都不会有太大的压力。并且,由于Android采用XML对界面进行描述,使得对界面的更换也变得容易,设计师可以设计出多套界面,不论是用于UI方案评估或是在实际应用中更换界面风格都很方便。这也是其他移动平台的开发所不具备的。
⑷ Cocos Creator怎么使用安卓手机相册中的图片,最好有示例源码
android 将drawable中的图片保存到系统相册中的原理比较简单,获取到的bitmap,然后通过的compress方法写到一个fileoutputstream中. 再通知MediaScannerService有图片文件加入就可以了.
保存图片的核心代码如下:
Bitmap bitmap= BitmapFactory.decodeResource(getResources(), R.drawable.icon);
MediaStore.Images.Media.insertImage(context.getContentResolver(), bitmap, name, "");
或者
FileOutputStream fos = openFileOutput("image", Context.MODE_PRIVATE);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
//发送系统通知消息
context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
另一种方法是直接使用文件流读写:
InputStream is = mContext.getResources().openRawResource(PicID);
FileOutputStream fos = new FileOutputStream(LogoFilePath);
byte[] buffer = new byte[8192];
int count = 0;
while((count=is.read(buffer)) > 0)
{
fos.write(buffer, 0, count);
}
fos.close();
is.close();
这里要注意目录权限问题:在应用程序AndroidManifest.xml中的manifest节点中加入android:sharedUerId="android.uid.system"这个属性。然后放在源码环境中编译,并通过adb install 的方式进行安装。mk文件中的属性改为LOCAL_CERTIFICATE :=platform。
⑸ 编译安卓5.0源码使用什么系统
1、ubuntu需要安装openjdk 7
2、 如果没有openjdk 7的话,需要下载jdk7,然后修改 build/core/main.mk 177行,将requires_openjdk := true 改成false
3 、编译,如果出现chromium_org的问题,将 external/chromium_org/Android.mk 中 18行添加一个PRODUCT_PREBUILT_WEBVIEWCHROMIUM :=yes
4 、然后初始化编译环境
5 、make systemimage
不淡定的朋友赶紧开工吧!
⑹ 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.(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以下,也就是api<24时,运行是没有任何问题的。可是当targetSdkVersion变成24及其以上并且在android7.0(及以上版本)系统运行时,会抛出异常:FileUriExposedException。
⑺ 有安卓游戏源码,怎么打开并改变里面的图片,然后怎么生成新的apk文件
你是在开发游戏吧,这个需要编程什么的。
你不会的话。可以在应用宝里面下载这个制作的教程的!
应用宝里面的资源很多,除了有大量的APP应用可以免费下载
还有很多游戏制作的教程和攻略呢,都是很不错的,免费下载呢
在手机桌面点击打开应用宝软件——直接搜索你需要的教程下载就可以
当然也可以连接电脑上给手机安装的,这个还是比较好的,电脑上打开应用宝后,按照提示连接上手机数据线,点击手机应用——软件里面,就可以下载很多自己喜欢的软件,望
⑻ 安卓手机的源代码是什么能升级系统使用吗怎么用的望大神简要回答一下,必采纳。
java虚拟机
⑼ android开发中怎么调用系统的截屏功能
截图功能在源码中的位置是com.android.systemui.screenshot,下面有四个类
其中主要工作都在GlobalScreenshot中,包括截图后的动画效果、保存到本地和显示到通知栏。