android学习1.docx
- 文档编号:27246034
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:15
- 大小:577.77KB
android学习1.docx
《android学习1.docx》由会员分享,可在线阅读,更多相关《android学习1.docx(15页珍藏版)》请在冰豆网上搜索。
android学习1
1.Android应用程序框架
2.电话拨号器
应用使用手机的电话服务,所有要在清单文件androidManifest.xml中添加电话服务权限:
界面布局:
电话拨号器:
3.Android中的显示单位:
4.短信发送器:
短信服务权限:
name="android.permission.SEND_SMS"/> 界面布局: 短信发送代码: 5.对应用进行单元测试: 6.使用文件进行数据存储: 7.读取文件内容: 8.使用SAX解析XML文件 9.使用DOM读取XML文件 importjava.io.InputStream; importjava.util.ArrayList; importjava.util.List; importjavax.xml.parsers.DocumentBuilder; importjavax.xml.parsers.DocumentBuilderFactory; importorg.w3c.dom.Document; importorg.w3c.dom.Element; importorg.w3c.dom.Node; importorg.w3c.dom.NodeList; importcn.itcast.xml.domain.Person; /** *使用Dom解析xml文件 * */ publicclassDomXMLReader{ publicstaticList List DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance(); try{ DocumentBuilderbuilder=factory.newDocumentBuilder(); Documentdom=builder.parse(inStream); Elementroot=dom.getDocumentElement(); NodeListitems=root.getElementsByTagName("person");//查找所有person节点 for(inti=0;i Personperson=newPerson(); //得到第一个person节点 ElementpersonNode=(Element)items.item(i); //获取person节点的id属性值 person.setId(newInteger(personNode.getAttribute("id"))); //获取person节点下的所有子节点(标签之间的空白节点和name/age元素) NodeListchildsNodes=personNode.getChildNodes(); for(intj=0;j Nodenode=(Node)childsNodes.item(j); //判断是否为元素类型 if(node.getNodeType()==Node.ELEMENT_NODE){ ElementchildNode=(Element)node; //判断是否name元素 if("name".equals(childNode.getNodeName())){ //获取name元素下Text节点,然后从Text节点获取数据person.setName(childNode.getFirstChild().getNodeValue()); }elseif(“age”.equals(childNode.getNodeName())){ person.setAge(newShort(childNode.getFirstChild().getNodeValue())); } } } persons.add(person); } inStream.close(); }catch(Exceptione){ e.printStackTrace(); } returnpersons; } 10.为应用添加新的Activity 第一步: 新建一个继承Activity的类,如: NewActivity publicclassNewActivityextendsActivity{ @OverrideprotectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); //这里可以使用setContentView(R.layout.xxx)显示某个视图.... } } 第二步: 需要在功能清单AndroidManifest.xml文件中添加进上面Activity配置代码(红色部分): android=" package="cn.itcast.action" android: versionCode="1" android: versionName="1.0"> icon="@drawable/icon"android: label="@string/app_name"> ..... name=".NewActivity"android: label="新activity的页面标题"/> ... android: name属性值的前面加了一个点表示NewActivity是当前包cn.itcast.action下的类,如果类在应用的当前包下,可以省略点符号,如果类在应用的子包下必须加点,如: NewActivity类在cn.itcast.action.user包下可以这样写: name=“.user.NewActivity“/> 打开新的activity不传递参数 在一个Activity中可以使用系统提供的startActivity(Intentintent)方法打开新的Activity,在打开新的Activity前,你可以决定是否为新的Activity传递参数: 第一种: 打开新的Activity,不传递参数 publicclassMainActivityextendsActivity{ @OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ....... Buttonbutton=(Button)this.findViewById(R.id.button); button.setOnClickListener(newView.OnClickListener(){//点击该按钮会打开一个新的Activity publicvoidonClick(Viewv){ //新建一个显式意图,第一个参数为当前Activity类对象,第二个参数为你要打开的Activity类 startActivity(newIntent(MainActivity.this,NewActivity.class)); }}); } } 打开新的Activity,并传递若干参数 第二种: 打开新的Activity,并传递若干个参数给它: publicclassMainActivityextendsActivity{ @OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ....... button.setOnClickListener(newView.OnClickListener(){//点击该按钮会打开一个新的Activity publicvoidonClick(Viewv){ Intentintent=newIntent(MainActivity.this,NewActivity.class) Bundlebundle=newBundle();//该类用作携带数据 bundle.putString("name","传智播客"); bundle.putInt("age",4); intent.putExtras(bundle);//附带上额外的数据 startActivity(intent); }});} } 在新的Activity中接收前面Activity传递过来的参数: publicclassNewActivityextendsActivity{ @OverrideprotectedvoidonCreate(BundlesavedInstanceState){ ........ Bundlebundle=this.getIntent().getExtras(); Stringname=bundle.getString("name"); intage=bundle.getInt("age"); } } 11.Intent(意图)配置 Android基本的设计理念是鼓励减少组件间的耦合,因此Android提供了Intent(意图),Intent提供了一种通用的消息系统,它允许在你的应用程序与其它的应用程序间传递Intent来执行动作和产生事件。 使用Intent可以激活Android应用的三个核心组件: 活动、服务和广播接收器。 Intent可以划分成显式意图和隐式意图。 显式意图: 调用Intent.setComponent()\Intent.setClassName()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了要激活的组件是哪个组件。 隐式意图: 没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。 查找规则请见ppt下方备注。 name="android.intent.action.CALL"/> name="android.intent.category.DEFAULT"/> scheme="tel"/> name="android.intent.action.CALL"/> name="android.intent.category.DEFAULT"/> mimeType="vnd.android.cursor.item/phone"/> 12.服务—Service Android中的服务类似windows中的服务,服务一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。 服务的开发比较简单,如下: 第一步: 继承Service类 publicclassSMSServiceextendsService{} 第二步: 在AndroidManifest.xml文件中的 name=".SMSService"/> 服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。 这两个方法都可以启动Service,但是它们的使用场合有所不同。 使用startService()方法启用服务,访问者与服务之间没有关连,即使访问者退出了,服务仍然运行。 使用bindService()方法启用服务,访问者与服务绑定在了一起,访问者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。 采用Context.startService()方法启动服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。 通过startService()和stopService()启动关闭服务。 适用于服务和访问者之间没有交互的情况。 如果服务和访问者之间需要方法调用或者传递参数,侧需要使用bindService()和unbindService()方法启动关闭服务。 采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法,这个时候访问者和服务绑定在一起。 如果访问者要与服务进行通信,那么,onBind()方法必须返回Ibinder对象。 如果访问者退出了,系统就会先调用服务的onUnbind()方法,接着调用onDestroy()方法。 如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。 如果访问者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()-->onDestroy()方法。 13.自定义类型,要支持parcelable协议 14电话挂断 15音频采集 你可以使用手机进行现场录音,实现步骤如下: 第一步: 在功能清单文件AndroidManifest.xml中添加音频刻录权限: name="android.permission.RECORD_AUDIO"/> 第二步: 编写音频刻录代码: MediaRecorderrecorder=newMediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//从麦克风采集声音 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);//内容输出格式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//音频编码方式 recorder.setOutputFile("/mnt/sdcard/itcast.amr"); recorder.prepare();//预期准备 recorder.start();//开始刻录 ... recorder.stop();//停止刻录 recorder.reset();//重设 recorder.release();//刻录完成一定要释放资源 音乐播放: MediaPlayermediaPlayer=newMediaPlayer(); if(mediaPlayer.isPlaying()){ mediaPlayer.reset();//重置为初始状态 } mediaPlayer.setDataSource("/mnt/sdcard/god.mp3"); mediaPlayer.prepare(); mediaPlayer.start();//开始或恢复播放 mediaPlayer.pause();//暂停播放 mediaPlayer.start();//恢复播放 mediaPlayer.stop();//停止播放 mediaPlayer.release();//释放资源 mediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener(){//播出完毕事件 @OverridepublicvoidonCompletion(MediaPlayerarg0){ mediaPlayer.release(); } }); mediaPlayer.setOnErrorListener(newMediaPlayer.OnErrorListener(){//错误处理事件 @OverridepublicbooleanonError(MediaPlayerplayer,intarg1,intarg2){ mediaPlayer.release(); returnfalse; } }); 16.对话框通知(DialogNotification): 当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成。 下面代码将打开一个如右图所示的对话框: newAlertDialog.Builder(context) .setTitle("java培训") .setCancelable(false)//设置不能通过“后退”按钮关闭对话框 .setMessage("浏览传智播客网站? ") .setPositiveButton("确认", newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialoginterface,inti){ Uriuri=Uri.parse(" Intentintent=newIntent(Intent.ACTION_VIEW,uri); startActivity(intent); } }) .setNegativeButton("取消",newDialogInterface.OnClickListener(){ publicvoidonClick(DialogInterfacedialog,intid){ dialog.cancel(); } }) .show();//显示对话框 上面代码采用的是一个链式调用,像setTitle()、setMessage()这些方法,他们的返回值都是当前对话框对象。 17.android样式和主题(Style&&&theme)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- android 学习