版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Android真机开发教程ZZ:DasonQQ:623466642空间:/dasonn/一:系统安装与HelloWorld【目的】安装智能手机开发相关软件平台。【要求】12HelloWorld3、了解项目的基本文件目录结构【原理】Eclipse安装原理,Android编程方法【过程】1JAVAJDK下载网址:/javase/downloads/2、安装Eclipse直接解压拷贝。3Android或/index.htmlAndroidSDK。4、安装ADT(AndroidDevelopmentTools)或/index.html5、安装手机USB驱动或/index.html则可暂时不装。6、建立新项目,实现HelloWorldOpenEclipse.Clickthemenu File->New->Project.ExpandtheAndroidfolderandselectAndroidProject.NametheprojectHelloWorld得到的文件结构如下:运行:模拟器真手机模拟器真手机模拟器运行:真实手机调试:AndroidjavaJAVAAndroidjavaandroid.appandroid.contentandroid.appandroid.contentAndroid包含用于在设备上访问和发布数据的类。android.databaseandroid.database.sqliteandroid.graphicsandroid.graphics.drawableandroid.graphics.glutilsandroid.hardwareandroid.locationandroid.mediaandroid.openglandroid.osandroid.saxandroid.telephonyandroid.telephony.gsmandroid.textandroid.text.methodandroid.text.styleandroid.utilandroid.viewandroid.view.animationandroid.webkitandroid.widget文件格式描述:
包含了用于浏览内容提供源返回数据的类。SQLLite有数据库。矩形等。bitmapgradient。提供了大量能够在Android设备上使用OpenGL嵌入式系统版(OpenGLES)绘图的类.提供对硬件设备的支持,这些硬件设备不一定会出现在每一个Android设备上。定义Android定位和相关服务的类。定位,视频,音频和相关的服务用于网络连接的类,功能比.*强大。提供OpenGL(高性能图形算法行业标准)工具。3D加速等提供设备上基础的操作系统服务、信息传递和进程间通信。提供用于方便地访问Android支持的内容提供源的类。SAXhandler提供用于语音识别的类。GSM提供了用于监听或修改键盘输入的类。提供了用于预览或修改视图对象中文本跨度形式的类。提供了通用的工具方法,例如日期/时间操作、64位编码解码器、字符串数组互换方法和与XML相关的方法。提供了用于处理屏幕布局和用户交互的基本UI类。提供了动画处理的类提供了浏览网页的工具。widget包包含了用在应用程序屏幕上的UI元素(绝大部分可视)。Android的相关文件类型:Java---应用程序源文件Android本身相当一部分是由java编写而成,而且android应用必须使用java开发class---java编译后的目标文件:javaj2eej2seAndroiddex---Android平台可执行文件:d自己提供了一个虚拟机(k),这种虚拟机执行的并非a字节码,而是另一JVMjavaClassAndroid平台工具将此Class文件转换成dex字节码apk文件---Android上的安装文件Apk是Android安装包的扩展名,一个Android安装包包含了与某个Android应用程序相关的所有文件,apk文件将androidManifest.xml文件,应用程序代码(dex文件)资源文件和其他文件打成一个压缩包,一个工程只能打进一个apk文件(有点类似exe文件)。二:界面设计:控件与布局【目的】Android编程基础,UI设计。【要求】1、了解Android编程原理2、掌握界面控件设计3、掌握控件的事件处理编程【原理】UI设计原理【过程】1、了解各种控件的基本功能各种控件:MenuTextView、EditTextButtonRadiobuttonListProgressBar;2、了解布局Layout的应用要机界面,必须了解相关的布局,选择合适的布局安排各个控件。多种Layout:AbsoluteLayoutFrameLayoutGridViewLinearLayoutListLayoutRadioGroupTableLayout………<LinearLayout<LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:id="@+id/TextView01"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/hello"/><EditTextandroid:id="@+id/EditText01"android:layout_width="fill_parent"android:layout_height="wrap_content"/><ImageViewandroid:id="@+id/ImageView01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/adr"/><LinearLayoutandroid:id="@+id/LinearLayout01"android:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><Buttonandroid:id="@+id/Button01"android:layout_width="wrap_content"android:layout_heightandroid:layout_height="wrap_content"android:text="@string/btn_name"/><Buttonandroid:id="@+id/Button02"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/stp_name"/></LinearLayout><ProgressBarandroid:id="@+id/progressbar01"android:layout_width="fill_parent"android:layout_height="20px"style="?android:attr/progressBarStyleHorizontal"/><SeekBarandroid:id="@+id/seekbar01"android:layout_width="fill_parent"android:layout_height="20px"style="?android:attr/progressBarStyleHorizontal"/></LinearLayout>三:图形绘制与OpenGLES【目的】在屏幕绘制各种图形,了解OpenGL【要求】1、了解在屏幕绘图方法2、了解OpenGL【原理】【过程】1、绘制直线、园、曲线等各种图形2、显示字符3OpenGLESAndroid中的图形系统采用Client/Server架构。Server(即SurfaceFlinger)主要由c++代码编写而成。Client端代码分为两部分,一部分是由Java提供的供应用使用的c++写成的底层实现。AndroidsurfaceviewCanvasviewsurface上的绘图操作。View(TextView,Button)surfaceOpenGLES(OpenGLforEmbeddedSystems)是一个针对嵌入式应用的,免费的,支持2D、3DAPI(OpenGL®ESisaroyalty-free,cross-platformAPIfull-function2Dand3Dgraphicsonembeddedsystemsincludingconsoles,phones,appliancesandvehicles。目前主要由3个版本,1.0,1.1,2.0。OpenGLES1.0OpenGL1.3,OpenGLES1.1OpenGL1.51.0。OpenGLES2.0则是参照OpenGL2.0规范定义的。简单OpenGLES是OpenGLandroidES1.1api,OpenGLES2.03DOpenGLES1.1OpenGLES2.0官方的roadmap也是将这两个版本并行发展的。2.X并不能百分百兼容1.X。Android1.X2.X。OpenGLES2D/3DOpenGLAPIOpenGLAPIAndroidOpenGLandroid.opengljavax.microedition.khronos.egljavax.microedition.khronos.openglespublicvoidpublicvoidonDrawFrame(GL10gl){//一般的opengl程序,首先要做的就是清屏GL10.GL_DEPTH_BUFFER_BIT);////紧接着设置模型视图矩阵.gl.glLoadIdentity();//清空矩阵.,,,,,,,,,;/视点变换,将相机位置设置为(0,0,3),同时指向(0,0,0)点//设置模型位置旋转及缩放信息gl.glTranslatef(0.0f,0.0f,-1.0f);//将模型位置设置为(0,0,-1)floatangle=30.0f;gl.glRotatef(angle,0,1,0);//绕模型自身Y轴旋转30度gl.glRotatef(angle,1,0,0);//绕模型自身X轴旋转30度gl.glScalef(1.2f,1.2f,1.2f);//设置三方向的缩放系数//设置颜色gl.glColor4f(0.0f,0.0f,0.0f,1.0f);//渲染立方体e,.//mCube.draw(gl,gl.GL_LINES);}四:网络访问与服务【目的】掌握Android网络访问方法【要求】1、了解手机WEB网站访问编程2、通过网络进行数据访问3、了解数据库使用【原理】利用Android网络访问协议【过程】1、访问WEB网站,通过HttpResponse类,读入网络数据。AndroidSDK网络包:包.http.wifi
描述Android网络访问socket。该包包括URI类,不仅仅是传统的联网方面。处理Android有关Http协议类。在Android平台上管理有关WiFi(802.11无线Ethernet)应用的类。包含用于管理和发送SMS(文本)消息的类。HttpClientclient=HttpClientclient=newDefaultHttpClient();HttpGetget=newHttpGet(url);HttpResponseresponse=client.execute(get);HttpEntityentity=response.getEntity();//尝试读取entity的长度,返回-1表示长度未知longlength=entity.getContentLength();InputStreamis=entity.getContent();Strings=null;if(is!=null){ByteArrayOutputStreambaos=newByteArrayOutputStream();byte[]buf=newbyte[512];intch=-1;intcount=0;while((ch=is.read(buf))!=-1){baos.write(buf,0,ch);count+=ch;//如果长度已知,可以通过taskProgress()通知监听者任务执行的比例if(length>0){listener.taskProgress(this,count,length);}//为了更好的演示进度,让线程休眠100msThread.Thread.sleep(100);}Log.e("HttpTask","length="+baos.toByteArray().length);//返回内容s=newString(baos.toByteArray());}returns;网站数据:五:硬件访问与传感器【目的】通过底层API访问手机硬件及手机上的各种传感器【要求】1、获取手机上电话、短信等各种功能的编程2、了解手机上各种传感器的功能与使用方法【原理】利用手机本身的功能与相关传感器的使用【过程】1、了解程序使用手机电话功能的方法短信收发:SmsManagersms=SmsManager.getDefault();PendingIntentSmsManagersms=SmsManager.getDefault();PendingIntentpi=PendingIntent.getBroadcast(this,0,newIntent(),0);sms.sendTextMessage(phoneNumber,null,MsgStr,pi,null);其中参数phoneNumber和MsgStr均是String类型,表示接收方的电话号码和短信内容◆接收短信主要是继承BroadcaseReceiver类,覆盖onReceive函数:packagecom.android.TinySMS;importandroid.app.Activity;importandroid.app.PendingIntent;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.os.Bundle;importandroid.telephony.gsm.SmsManager;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.Toast;publicclassTinySMSextendsActivity{publicstaticfinalStringSMS_ACTION ="com.android.TinySMS.RESULT";// privateTextView message;privateButtonprivateEditTextprivateEditText
snd;privateSentReceiverreceiver=newSentReceiver();privateclassSentReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){f(){intcode=getResultCode();//短消息发送成功if(code==Activity.RESULT_OK)Toast.makeText(TinySMS.this,R.string.msg_sent,Toast.LENGTH_SHORT).show();}}};/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);tel=(EditText)findViewById(R.id.EditText01);tel.setText("5554"); //模拟器之间互发短信txt=(EditText)findViewById(R.id.EditText02);txt.setText("我用自己的程序试试发短信。");snd=(Button)findViewById(R.id.Button01);snd.setOnClickListener(newView.OnClickListener(){publicvoidonClick(Viewarg0){StringphoneNo=tel.getText().toString();Stringmessage=txt.getText().toString();if(phoneNo.length()>0&&message.length()>0){sendSMS(phoneNo,message);}else{..s,"请重新输入电话号码和短信内容"}}});}privatevoidsendSMS(Stringaddress,Stringcontent){rr=.ti=w(//生成PendingIntent,当消息发送完成,接收到广播PendingIntentsentIntent=PendingIntent.getBroadcast(thisthis,0,i,.manager.sendTextMessage(address,null,content,sentIntent,null);}}如果要收发短信,还需在AndroidManifest.xml中声明权限:<uses-permission<uses-permission2AndroidSDK中提供的面向硬件的特性特性android.hardware.Cameraandroid.hardware.SensorManagerandroid.hardware.SensorListener
描述相机交互的类,可以截取照片、获取预览屏幕的图像,修改理相机操作的参数。允许访问Android平台传感器的类。并非所有配备Android的设备都支持SensorManager中的所有传感器。在传感器值实时更改时,希望接收更新的类要实现的接口。用以监视android.media.MediaRecorderandroid.FaceDetectorandroid.os.*
硬件中一个或多个可用传感器。用于录制媒体的类。人脸进行基本识别类。可以与操作环境交互的包,包括电源管理、文件查看器、处理器和消息类。android.hardware.SensorManager包含几个常量,这表示Android传感器系统的不同方面,包括:用户界面。不保证特定的采样率可用。准确性高、低、中、不可靠。SensorListener接口是传感器应用程序的中心。它包括两个必需方法:onSensorChanged(intsensor,floatvalues[])方法在传感器值更改时调用。该方法只对受此应用程序监视的传感器调用。该方法的参数包括:� 一个整数,指示更改的传感器;� 提供三个浮点值。方向和加速表传感器都提供三个数据值。当传感器的准确性更改时,将调用onAccuracyChanged(intsensor,intaccuracy)方法。参数包括两个整数:一个表示传感器,另一个表示该传感器新的准确值。要与传感器交互,应用程序必须注册以侦听与一个或多个传感器相关的活动。注册使用SensorManager类的registerListener方法完成。并非所有支持Android的设备都支持SDK中定义的所有传感器。以Android为中心的传感器系统packagecom.android.cameraAndroid;importandroid.app.Activity;packagecom.android.cameraAndroid;importandroid.app.Activity;importandroid.os.Bundle;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importandroid.content.Context;importandroid.content.Intent;importandroid.graphics.PixelFormat;importandroid.hardware.Camera;importandroid.hardware.Camera.Parameters;importandroid.hardware.Camera.PictureCallback;importandroid.hardware.Camera.ShutterCallback;importandroid.media.AudioManager;importandroid.media.ToneGenerator;import.Uri;importandroid.os.Environment;importandroid.os.StatFs;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.SurfaceHolder;importandroid.view.SurfaceView;publicclassCameraAndroidextendsActivity{privateCameraPreviewpreview;privateCameracamera;privateToneGeneratortone;privatestaticfinalintOPTION_SNAPSHOT=0;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);preview=newCameraPreview(this);setContentView(preview);}@OverridepublicbooleanonOptionsItemSelected(MenuItemitem){intitemId=item.getItemId();switch(itemId){caseOPTION_SNAPSHOT://拍摄照片camera.takePicture(shutterCallback,null,jpegCallback);break;}returntrue;}//返回照片的JPEG格式的数据privatePictureCallbackjpegCallback=newPictureCallback(){publicvoidonPictureTaken(byte[]data,Cameracamera){Parametersps=camera.getParameters();if(ps.getPictureFormat()==PixelFormat.JPEG){//存储拍照获得的图片Stringpathsave(data);//将图片交给Image程序处理Uriuri=Uri.fromFile(newFile(path));Intentintent=newIntent();intent.setAction("ent.action.VIEW");intent.setDataAndType(uri,"image/jpeg");startActivity(intent);}}};//快门按下的时候onShutter()被回调privateShutterCallbackshutterCallback=newShutterCallback(){publicvoidonShutter(){if(tone==null)//发出提示用户的声音tone=newToneGenerator(AudioManager.STREAM_MUSIC,ToneGenerator.MAX_VOLUME);tone.startTone(ToneGenerator.TONE_PROP_BEEP2);}};privateStringsave(byte[]data){Stringpath="/sdcard/"+System.currentTimeMillis()+".jpg";try{//判断SD卡上是否有足够的空间Stringstorage=Environment.getExternalStorageDirectory().toString();StatFsfs=newStatFs(storage);longavailable=fs.getAvailableBlocks()*fs.getBl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蜘蛛开店教学设计
- 24.3 锐角三角函数 同步练习
- 山东省齐河县马集乡中学2024-2025学年七年级上学期期中考试地理试题
- 福建省泉州市2024-2025学年高二上学期11月期中物理试题(含答案)
- 2024-2025学年湖南师大附中高二(上)第一次月考物理试卷(含答案)
- 标准室内装修合同格式
- 风险投资协议书样本
- 2024年进口水果买卖合同水果代理
- 江苏省苏州市2024-2025学年九年级上学期化学第一次月考模拟卷
- 工业用油采购合同范文
- 人教版(2024新版)七年级上册英语Unit 5单元测试卷(含答案)
- 美食行业外卖平台配送效率提升方案
- 2025届高考语文一轮复习:文言文概括和分析 课件
- 年产10万套新能源车电池托盘项目可行性研究报告写作模板-申批备案
- 《大学美育》 课件 4.模块五 第二十四章 时空综合的影视艺术之美
- 2024年全国职业院校技能大赛高职组(智慧物流赛项)考试题库(含答案)
- 北师大版(三起)(2024)三年级上册英语Unit 1 Family单元测试卷(含答案)
- 2024水利云播五大员考试题库及答案
- 2024中考语文《儒林外史》历年真题专练(学生版+解析版)
- 小学必背古诗练习题(四年级上册)(含答案)
- DL∕T 698.45-2017 电能信息采集与管理系统 第4-5部分:通信协议-面向对象的数据交换协议
评论
0/150
提交评论