达内android介绍.ppt_第1页
达内android介绍.ppt_第2页
达内android介绍.ppt_第3页
达内android介绍.ppt_第4页
达内android介绍.ppt_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京达内科技 ,讲师:刘国斌,Android应用开发基础,达内科技 ,什么是3G,3G,全称为3rd Generation,中文含义就是指第三代数字通信。 所谓3G,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。 3G只是一种通信技术标准,符合这个标准的技术有WCDMA、CDMA2000、TD-SCDMA三种无线接口标准。中国联通使用的是WCDMA(世界上大部分3G网络都采用的是该标准) ;中国电信使用的是CDMA2000 (日、韩和北美使用);中国移动使用的是具有自主知识产权的TD-SCDMA(只有中国才使用) 。相对第一代模拟制式手机(1G)和第二代GSM、CDMA等数字

2、手机(2G),3G手机能处理图像、音乐、视频等多种媒体形式,提供包括网页浏览、电话会议、电子商务等多种信息服务。 3G网络与前两代的主要区别是整合了互联网并且数据传输速度有很大的提升。 目前中国正在建设3G网络,大城市的3G网络基本上已经铺设好,像北京铺设好了超过2000个基站,深圳铺设了1000多个基站。但是要全民普及到3G 手机尚且需要几年时间。现在,大家使用的手机大多还是2.5G手机,符合2.5G网络的接口标准有CDMA2000 1X和GPRS,中国联通使用的是CDMA2000 1X标准,中国移动使用的是GPRS标准。目前,我们可以把2.5G移动通信技术看作是2G迈向3G的衔接性技术,在

3、2.5G网络下出现了如WAP、蓝牙(Bluetoot) 等技术。对于2.5G网络,我们应该也要有所了解,因为以后大家到企业中有可能会面对2.5G网络下的应用,如:wap项目。,达内科技 ,什么是Android,Android是Google在2007年11月5日推出的开源手机操作系统。目前Android在中国的发展是非常火的,为了节省研发费用,国内很多的手机厂商和移动运营商已经开始使用上android操作系统了,其中包括中国移动,中国联通,中国电信,华为,联想和一些山寨手机厂商。 另外android应用的范围不仅仅在手机,还被应用在汽车、平板电脑、和智能上网设备上。 因为目前大家使用的手机大多属

4、于傻瓜手机,也就是打打电话、发发短信。从今天开始,大家对智能手机要有个重新的认识,智能手机除了可以打电话发短信之外还能完成电脑所能完成一切,所以大家需要把智能手机看作是一台电脑。,移动互联网发展趋势,移动互联网发展趋势,IDC:2015年Android市场份额将达到45% IDC预计,2015年Android市场份额将达到45.4%,成为全球最大智能手机操作系统。 IDC:2011年智能手机出货量将超过4.5亿部 2011年全球智能手机市场规模将增长49.2%,出货量将超过4.5亿部,而2010年为3.034亿部。 2010年移动开发人才需求20万,未来人才需求缺口将达百万 随着Android

5、平台的扩张引发了Android人才荒,2010年移动开发人才需求20万,未来人才需求缺口将达百万。3G人才紧缺。 51job:有1年开发经验的Android工程师月薪在8000元左右 前程无忧:4月对Android工程师的招聘量比3月增加了23%,Android工程师以手机开发为主要对象,有一年开发经验的Android工程师的月薪在8000元左右。,达内科技 ,智能手机软件平台,智能手机软件平台有: Symbian, Windows Phone, RIM BlackBerry, Android, iPhone, Java/J2ME。 2011年市场份额(美国2010年11月到2011年1月之间

6、): Android 29% iPhone 27% windows Phone 10% Symbian 2%,达内科技 ,如何安装 Android SDK 和Eclipse 插件,所需开发环境: JDK 5或以上版本(仅有JRE不够) 、Eclipse 3.4 或以上版本 下载用于在Eclipse 开发android应用的ADT 插件 在企业开发中,很多程序员使用Eclipse IDE作为应用的开发环境。为了使得Android应用的创建,运行和调试更加方便快捷。Android的开发团队专门针对Eclipse IDE定制了一个插件:Android Development Tools(ADT) 下

7、载地址: 安装 Eclipse 插件 (ADT) 启动 Eclipse,选择 Help Install New Software,在出现的对话框里,点击Add按钮,在对话框的name一栏输入“ADT”, 然后点击Archive.,浏览和选择已经下载的ADT插件压缩文件。 点击 OK.。返回可用软件的视图,你会看到这个插件,然后选择Developer Tools (会选中下面的“Android Developer Tools”和 “Android Editors“),点击 Next,最后重启 Eclipse。 下载安装Android SDK: Android SDK包含了开发Android应用所

8、依赖的jar文件、运行环境及相关工具。 下载地址: 下载完SDK后,把.zip文件解压到你电脑上合适位置。启动 Eclipse,选择window-preferences,在打开的视图左边点击android,在右边的SDK Location中选择Android SDK所在位置。,Android各版本最新份额,达内科技 ,开发第一个Android应用,打开Eclipse,新建项目(点击FileNewProject),在项目列表中展开Android目录,选择Android Project,如下图:,达内科技 ,开发第一个Android应用,达内科技 ,开发第一个Android应用,点击”finish

9、”即可完成项目的创建,创建后的项目已经是一个可运行的Android应用,我们可以通过下面方式运行此应用: 点击工具栏上机器人形状的虚拟设备管理器(简称“AVD“),如下:,达内科技 ,开发第一个Android应用,在打开的虚拟设备管理器中创建一个虚拟手机:,达内科技 ,开发第一个Android应用,在项目上右键点击run as Android application,如下图:,达内科技 ,Android应用程序架构,src/ java原代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Androi

10、d开发工具自动产生的。Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。 res/ 资源(Resource)目录 在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。 assets资源目录 Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R

11、.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:/android_asset/xxx.3gp AndroidManifest.xml 项目清单文件 这个文件列出了应用程序所提供的功能,以后你开发好的各种组件(Activity、ContentProvider、BroadcastReceiver、Service)需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),你还需在该文件中声明使用权限。 perties 项目环境信息,一般是不需要修改此文件,达内科技 ,电话拔号器,效果图

12、:,达内科技 ,电话拔号器,因为应用要使用手机的电话服务,所以要在清单文件AndroidManifest.xml中添加电话服务权限: 略. ,达内科技 ,电话拔号器,界面布局: LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局),达内科技 ,电话拔号器,Activity: public class DialerAction extends Activity Override public void onCreate(Bundle savedInstanc

13、eState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() public void onClick(View v) EditText editText = (EditText)findViewById(R.id.mobile); Intent intent = new Intent(Intent.AC

14、TION_CALL, Uri.parse(tel:+ editText.getText(); DialerAction.this.startActivity(intent); ); ,达内科技 ,电话拔号器,测试步骤: 1在Eclipse中运行此应用 2在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令再开启一个Android模拟器: emulator -data tarena 注:tarena为用户数据存取文件,如果该文件不存在,默认在tools目录创建该文件 3在电话扰号器中输入上图现显的电话号码,达内科技 ,输入内容自动完成文本框(AutoCompleteTe

15、xtView ),AutoCompleteTextView和EditText组件类似,都可以输入文本。 但AutoCompleteTextView组件可以和一个字符串数组或List对象 绑定,当用户输入两个及以上字符时,系统将在 AutoCompleteTextView组件下方列出字符串数组中所有以输入 字符开头的字符串,这一点和的搜索框非常相似, 当输入某一个要查找的字符串时,google搜索框就会列出以这个 字符串开头的最热门的搜索字符串列表。 public void onCreate(Bundle savedInstanceState) super.onCreate(savedInsta

16、nceState); setContentView(R.layout.main); String names = “china, “china1, “child, “copy , “case, “come, abc, acc; AutoCompleteTextView nameText = (AutoCompleteTextView)this.findViewById(R.); ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_dropdown_item_1line, names); nam

17、eText.setAdapter(adapter); ,达内科技 ,“尚未注册网络”错误信息的解决办法,打开Android模拟器时,出现无信号,拔打电话或发短信时,提示“尚未注册网络”错误信息的解决方案如下。 场景一:你的电脑没有连接上互联网,同时也没有在局域网。 解决办法:右键点击网上邻居,选择属性,在网络连接窗口中右键点击本地连接,选择属性,设置TCP/IP属性如下: IP地址:00 子网掩码: 默认网关:00 首选DNS服务器:00 场景二:你的电脑没有连接上互联网,但在局域网。 解决办法:右键点

18、击网上邻居,选择属性,在网络连接窗口中右键点击本地连接,选择属性,设置TCP/IP属性如下: IP地址:设置成你所在局域网的IP,如:00 子网掩码:设置成你所在局域网的掩码,如: 默认网关:设置成你所在局域网的网关,一般网关的IP格式为:*.*.*.1,如: 首选DNS服务器:设置成你所在局域网的路由器IP,一般路由器的IP格式为:*.*.*.1,如: 最后一种解决方案是:让你的电脑连接上互联网。,达内科技 ,短信发送器,效果图:,达内科技 ,短信发送器,因为应用要使用手机的短信服务,所以要在清单文件

19、AndroidManifest.xml中添加短信服务权限: 略. ,达内科技 ,短信发送器,界面布局: ,达内科技 ,短信发送器,Activity主要代码: String mobile = mobileView.getText().toString(); String content = contentView.getText().toString(); SmsManager smsManager = SmsManager.getDefault(); PendingIntent sentIntent = PendingIntent.getBroadcast(SMSSender.this, 0,

20、 new Intent(), 0); /如果字数超过70,需拆分成多条短信发送 List msgs = smsManager.divideMessage(content); for(String msg : msgs) smsManager.sendTextMessage(mobile, null, msg, sentIntent, null); /第四个参数用于告之短信发送状态,最后一个参数用于告之短信接收状态 Toast.makeText(SMSSender.this, 短信发送完成, Toast.LENGTH_LONG).show();,达内科技 ,发送彩信,可以通过调用系统自带的短信程

21、序发送彩信: Intent intent = new Intent(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(file:/sdcard/cong.png); intent.putExtra(address, ); intent.putExtra(exit_on_sent, true); intent.putExtra(subject, its subject); intent.putExtra(sms_body, its content); intent.setType(“i

22、mage/jpeg”); / 视频:video/mpeg* ,文本:text/plain startActivity(intent);,达内科技 ,对话框通知(Dialog Notification),当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成。 下面代码将打开一个如右图所示的对话框: new AlertDialog.Builder(context) .setTitle(java培训) .setCancelable(false) /设置不能通过“后退”按钮关闭对话框 .setMessage(浏览达内科技网站?) .setPositiveButton(确认, n

23、ew DialogInterface.OnClickListener() public void onClick(DialogInterface dialoginterface, int i) Uri uri = Uri.parse( Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); ) .setNegativeButton(取消, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog,

24、 int id) dialog.cancel(); ) .show();/显示对话框 上面代码采用的是一个链式调用,像setTitle()、setMessage()这些方法,他们的返回值都是当前对话框对象。,达内科技 ,创建带单选项列表的对话框,下面代码将打开一个如右上图所示的选项列表对话框: final String items = java, .net, php; new AlertDialog.Builder(SenderNotificationActivity.this).setTitle(选择语言) .setItems(items, new DialogInterface.OnCli

25、ckListener() public void onClick(DialogInterface dialog, int item) Toast.makeText(getApplicationContext(), itemsitem, Toast.LENGTH_SHORT).show(); ).show();/显示对话框 下面代码将打开一个如右下图所示的带单选框的列表对话框: final String items = java, .net, php; new AlertDialog.Builder(SenderNotificationActivity.this).setTitle(选择语言)

26、.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialog, int item) Toast.makeText(getApplicationContext(), itemsitem, Toast.LENGTH_SHORT).show(); dialog.cancel(); ).show();/显示对话框 setSingleChoiceItems()的第二个参数是设置默认选项, 选项索引从0开始,-1代表不选择任何选项。,达内科技

27、,创建带多选项列表的对话框,下面代码将打开一个如右下图所示的多选项列表对话框: final String items = java, .net, php; new AlertDialog.Builder(SenderNotificationActivity.this).setCancelable(false) .setTitle(选择语言) .setMultiChoiceItems(items, new booleanfalse,true,false, new DialogInterface.OnMultiChoiceClickListener() Override public void o

28、nClick(DialogInterface dialog, int which, boolean isChecked) if(isChecked) Toast.makeText(getApplicationContext(), itemswhich, Toast.LENGTH_SHORT).show(); ) .setPositiveButton(确认, new DialogInterface.OnClickListener() public void onClick(DialogInterface dialoginterface, int i) dialoginterface.dismis

29、s(); ) .show();/显示对话框,达内科技 ,进度对话框(ProgressDialog),效果图: 使用代码ProgressDialog.show(ProgressDialogActivity.this, 请稍等, 数据正在加载中., true);创建并显示一个进度对话框。 调用setProgressStyle()方法设置进度对话框风格。有两种风格: ProgressDialog.STYLE_SPINNER 旋体进度条风格 (为默认风格) ProgressDialog.STYLE_HORIZONTAL 横向进度条风格,达内科技 ,单选框(RadioButton),效果图: 要完成单选

30、框显示,我们需要使用到RadioGroup和RadioButton(单选框),RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框能被选中。(例子代码请见下方备注栏) RadioGroup.check(R.id.dotNet);将id名为dotNet的单选框设置成选中状态。 (RadioButton) findViewById(radioGroup.getCheckedRadioButtonId();/获取被选中的单选框。 RadioButton.getText();/获取单选框的值 调用setOnCheckedChangeListener()方法,处理单选框被选择事件,把

31、RadioGroup.OnCheckedChangeListener实例作为参数传入,达内科技 ,多选框(CheckBox),效果图: 每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。 CheckBox.setChecked(true);/设置成选中状态。 CheckBox.getText();/获取多选框的值 调用setOnCheckedChangeListener()方法,处理多选框被选择事件,把CompoundButton.OnCheckedChangeListener实例作为参数传入,达内科技 ,下拉列表框(Spinner),效果图: Spinner.

32、getItemAtPosition(Spinner.getSelectedItemPosition();获取下拉列表框的值 调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,把AdapterView.OnItemSelectedListener实例作为参数传入,达内科技 ,下拉列表框采用javabean作为Adapter元素,效果图: 很多时候显示在下拉列表框的值并不是希望得到的值,如果要做一个联系人下拉列表框,列表框列出的是联系人的姓名,因为姓名有可能相同,所以我们希望得到的值应该为该联系人的id,要实现这种需求我们需要自定义Adapter,当然自定义

33、Adapter需要我们编写一小段代码,如果我们不想编写Adapter,又能实现我们的需求,那是最好不过的了。通过观察ArrayAdapter中getView(int position, View convertView, ViewGroup parent)的内部代码发现,如果为ArrayAdapter指定的实际泛型参数类型没有实现CharSequence(字符串)接口,将会调用该类型对象的toString()向下拉列表框输出显示值。利用这个特点我们可以重写javaBean的toString()向下拉列表框提供显示值。,达内科技 ,下拉列表框-自定义选项界面样式,效果图: Spinner.get

34、ItemAtPosition(Spinner.getSelectedItemPosition();获取下拉列表框的值 调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,把AdapterView.OnItemSelectedListener实例作为参数传入,达内科技 ,拖动条(SeekBar),效果图: SeekBar.getProgress()获取拖动条当前值 调用setOnSeekBarChangeListener()方法,处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入,达内科技 ,菜单(Menu

35、),效果图: 重写Activity的onCreateOptionsMenu(Menu menu)方法,该方法用于创建选项菜单,在用户按下手机的“Menu”按钮时就会显示创建好的菜单,在onCreateOptionsMenu(Menu menu)方法内部可以调用Menu.add()方法实现菜单的添加。 重写Activity的onMenuItemSelected()方法,该方法用于处理菜单被选择事件 通过手机上提供的“MENU”按钮可以打开菜单,如果希望通过代码打开菜单,可以调用Activity的openOptionsMenu()方法。,达内科技 ,进度条(ProgressBar),在布局xml文

36、件中添加进度条代码: 在代码中操作进度条: ProgressBar.setMax(100);/设置最大刻度 ProgressBar.setProgress(0);/设置进度条的当前刻度,如果进度条的最大刻度为100,当前刻度为50,进度条将进行到一半。,达内科技 ,手势识别,第一步:建立手势库 使用SDK自带例子GestureBuilder建立手势库(位置:android-sdk-windowssamplesandroid-8GestureBuilder)。使用GestureBuilder之前,你需要恢复其到开发环境,然后进行编绎并部署到手机上。此时,就可以使用GestureBuilder建立

37、手势库,生成的手势库文件在SCDard上,默认文件名称为:gestures 第二步:在应用中加载手势库文件,然后开发手势识别代码。 把手势库文件gestures文件拷贝到项目的res/raw目录下。然后在布局文件中添加用于手势绘制的View: 为View添加手势监听事件:gestureOverlayView.addOnGesturePerformedListener(); 得到手势库:mLibrary = GestureLibraries.fromRawResource(this, R.raw.gestures); 加载手势库:mLibrary.load(); List predictions

38、 = mLibrary.recognize(gesture);/从手势库中查询匹配的内容,匹配的结果可能包括多个相似的内容,匹配度高的结果放在最前面 大多数情况下,手势都是通过一笔完成。然而有一些特别的需求就需要通过多个笔画来实现,这时可以使用gestureStrokeType属性进行设置:android:gestureStrokeType=multiple 手势识别代码见ppt下方,达内科技 ,android样式和主题(stylefont-size:18px; 可以像这样使用上面的css样式:达内科技 在Android中可以这样定义样式: 在res/values/styles.xml文件中添

39、加以下内容 18px #0000CC 在layout文件中可以像下面这样使用上面的android样式: ,达内科技 ,android样式和主题(style 尽管在定义上,样式和主题基本相同,但是它们使用的地方不同。样式用在单独的View,如:EditText、TextView等;主题通过AndroidManifest.xml中的和用在整个应用或者某个 Activity,主题对整个应用或某个Activity进行全局性影响。如果一个应用使用了主题,同时应用下的view也使用了样式,那么当主题和样式属性发生冲突时,样式的优先级高于主题。 另外android系统也定义了一些主题,例如:,该主题可以让A

40、ctivity看起来像一个对话框,还有透明主题:android:style/Theme.Translucent 。如果需要查阅这些主题,可以在文档的referenceandroid-R.style 中查看。,达内科技 ,编码实现软件界面,Android除了可以使用xml实现软件界面,还可以通过编码方式实现软件的界面,而且在某种情况下只能采用编码方式实现软件的界面,例如:软件运行时需要根据运算结果决定显示某些内容。如果不是必须,建议使用xml,因为这样可以使应用遵守mvc设计模式,具有良好的软件分层结构。下面代码实现了如HelloWorld项目一样的软件界面: public class MainActivity extends Activity public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); LinearLayout linearLay

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论