版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Android真機(jī)開發(fā)教程ZZ:DasonQQ:623466642空間:/dasonn/一:系統(tǒng)安裝與HelloWorld【目的】安裝智能手機(jī)開發(fā)相關(guān)軟件平臺(tái)?!疽蟆?2HelloWorld3、了解項(xiàng)目的基本文件目錄結(jié)構(gòu)【原理】Eclipse安裝原理,Android編程方法【過程】1JAVAJDK下載網(wǎng)址:/javase/downloads/2、安裝Eclipse直接解壓拷貝。3Android或/index.htmlAndroidSDK。4、安裝ADT(AndroidDevelopmentTools)或/index.html5、安裝手機(jī)USB驅(qū)動(dòng)或/index.html則可暫時(shí)不裝。6、建立新項(xiàng)目,實(shí)現(xiàn)HelloWorldOpenEclipse.Clickthemenu File->New->Project.ExpandtheAndroidfolderandselectAndroidProject.NametheprojectHelloWorld得到的文件結(jié)構(gòu)如下:運(yùn)行:模擬器真手機(jī)模擬器真手機(jī)模擬器運(yùn)行:真實(shí)手機(jī)調(diào)試:AndroidjavaJAVAAndroidjavaandroid.appandroid.contentandroid.appandroid.contentAndroid包含用于在設(shè)備上訪問和發(fā)布數(shù)據(jù)的類。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文件格式描述:
包含了用于瀏覽內(nèi)容提供源返回?cái)?shù)據(jù)的類。SQLLite有數(shù)據(jù)庫(kù)。矩形等。bitmapgradient。提供了大量能夠在Android設(shè)備上使用OpenGL嵌入式系統(tǒng)版(OpenGLES)繪圖的類.提供對(duì)硬件設(shè)備的支持,這些硬件設(shè)備不一定會(huì)出現(xiàn)在每一個(gè)Android設(shè)備上。定義Android定位和相關(guān)服務(wù)的類。定位,視頻,音頻和相關(guān)的服務(wù)用于網(wǎng)絡(luò)連接的類,功能比.*強(qiáng)大。提供OpenGL(高性能圖形算法行業(yè)標(biāo)準(zhǔn))工具。3D加速等提供設(shè)備上基礎(chǔ)的操作系統(tǒng)服務(wù)、信息傳遞和進(jìn)程間通信。提供用于方便地訪問Android支持的內(nèi)容提供源的類。SAXhandler提供用于語音識(shí)別的類。GSM提供了用于監(jiān)聽或修改鍵盤輸入的類。提供了用于預(yù)覽或修改視圖對(duì)象中文本跨度形式的類。提供了通用的工具方法,例如日期/時(shí)間操作、64位編碼解碼器、字符串?dāng)?shù)組互換方法和與XML相關(guān)的方法。提供了用于處理屏幕布局和用戶交互的基本UI類。提供了動(dòng)畫處理的類提供了瀏覽網(wǎng)頁(yè)的工具。widget包包含了用在應(yīng)用程序屏幕上的UI元素(絕大部分可視)。Android的相關(guān)文件類型:Java---應(yīng)用程序源文件Android本身相當(dāng)一部分是由java編寫而成,而且android應(yīng)用必須使用java開發(fā)class---java編譯后的目標(biāo)文件:javaj2eej2seAndroiddex---Android平臺(tái)可執(zhí)行文件:d自己提供了一個(gè)虛擬機(jī)(k),這種虛擬機(jī)執(zhí)行的并非a字節(jié)碼,而是另一JVMjavaClassAndroid平臺(tái)工具將此Class文件轉(zhuǎn)換成dex字節(jié)碼apk文件---Android上的安裝文件Apk是Android安裝包的擴(kuò)展名,一個(gè)Android安裝包包含了與某個(gè)Android應(yīng)用程序相關(guān)的所有文件,apk文件將androidManifest.xml文件,應(yīng)用程序代碼(dex文件)資源文件和其他文件打成一個(gè)壓縮包,一個(gè)工程只能打進(jìn)一個(gè)apk文件(有點(diǎn)類似exe文件)。二:界面設(shè)計(jì):控件與布局【目的】Android編程基礎(chǔ),UI設(shè)計(jì)?!疽蟆?、了解Android編程原理2、掌握界面控件設(shè)計(jì)3、掌握控件的事件處理編程【原理】UI設(shè)計(jì)原理【過程】1、了解各種控件的基本功能各種控件:MenuTextView、EditTextButtonRadiobuttonListProgressBar;2、了解布局Layout的應(yīng)用要機(jī)界面,必須了解相關(guān)的布局,選擇合適的布局安排各個(gè)控件。多種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中的圖形系統(tǒng)采用Client/Server架構(gòu)。Server(即SurfaceFlinger)主要由c++代碼編寫而成。Client端代碼分為兩部分,一部分是由Java提供的供應(yīng)用使用的c++寫成的底層實(shí)現(xiàn)。AndroidsurfaceviewCanvasviewsurface上的繪圖操作。View(TextView,Button)surfaceOpenGLES(OpenGLforEmbeddedSystems)是一個(gè)針對(duì)嵌入式應(yīng)用的,免費(fèi)的,支持2D、3DAPI(OpenGL?ESisaroyalty-free,cross-platformAPIfull-function2Dand3Dgraphicsonembeddedsystemsincludingconsoles,phones,appliancesandvehicles。目前主要由3個(gè)版本,1.0,1.1,2.0。OpenGLES1.0OpenGL1.3,OpenGLES1.1OpenGL1.51.0。OpenGLES2.0則是參照OpenGL2.0規(guī)范定義的。簡(jiǎn)單OpenGLES是OpenGLandroidES1.1api,OpenGLES2.03DOpenGLES1.1OpenGLES2.0官方的roadmap也是將這兩個(gè)版本并行發(fā)展的。2.X并不能百分百兼容1.X。Android1.X2.X。OpenGLES2D/3DOpenGLAPIOpenGLAPIAndroidOpenGLandroid.opengljavax.microedition.khronos.egljavax.microedition.khronos.openglespublicvoidpublicvoidonDrawFrame(GL10gl){//一般的opengl程序,首先要做的就是清屏GL10.GL_DEPTH_BUFFER_BIT);////緊接著設(shè)置模型視圖矩陣.gl.glLoadIdentity();//清空矩陣.,,,,,,,,,;/視點(diǎn)變換,將相機(jī)位置設(shè)置為(0,0,3),同時(shí)指向(0,0,0)點(diǎn)//設(shè)置模型位置旋轉(zhuǎn)及縮放信息gl.glTranslatef(0.0f,0.0f,-1.0f);//將模型位置設(shè)置為(0,0,-1)floatangle=30.0f;gl.glRotatef(angle,0,1,0);//繞模型自身Y軸旋轉(zhuǎn)30度gl.glRotatef(angle,1,0,0);//繞模型自身X軸旋轉(zhuǎn)30度gl.glScalef(1.2f,1.2f,1.2f);//設(shè)置三方向的縮放系數(shù)//設(shè)置顏色gl.glColor4f(0.0f,0.0f,0.0f,1.0f);//渲染立方體e,.//mCube.draw(gl,gl.GL_LINES);}四:網(wǎng)絡(luò)訪問與服務(wù)【目的】掌握Android網(wǎng)絡(luò)訪問方法【要求】1、了解手機(jī)WEB網(wǎng)站訪問編程2、通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)訪問3、了解數(shù)據(jù)庫(kù)使用【原理】利用Android網(wǎng)絡(luò)訪問協(xié)議【過程】1、訪問WEB網(wǎng)站,通過HttpResponse類,讀入網(wǎng)絡(luò)數(shù)據(jù)。AndroidSDK網(wǎng)絡(luò)包:包.http.wifi
描述Android網(wǎng)絡(luò)訪問socket。該包包括URI類,不僅僅是傳統(tǒng)的聯(lián)網(wǎng)方面。處理Android有關(guān)Http協(xié)議類。在Android平臺(tái)上管理有關(guān)WiFi(802.11無線Ethernet)應(yīng)用的類。包含用于管理和發(fā)送SMS(文本)消息的類。HttpClientclient=HttpClientclient=newDefaultHttpClient();HttpGetget=newHttpGet(url);HttpResponseresponse=client.execute(get);HttpEntityentity=response.getEntity();//嘗試讀取entity的長(zhǎng)度,返回-1表示長(zhǎng)度未知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;//如果長(zhǎng)度已知,可以通過taskProgress()通知監(jiān)聽者任務(wù)執(zhí)行的比例if(length>0){listener.taskProgress(this,count,length);}//為了更好的演示進(jìn)度,讓線程休眠100msThread.Thread.sleep(100);}Log.e("HttpTask","length="+baos.toByteArray().length);//返回內(nèi)容s=newString(baos.toByteArray());}returns;網(wǎng)站數(shù)據(jù):五:硬件訪問與傳感器【目的】通過底層API訪問手機(jī)硬件及手機(jī)上的各種傳感器【要求】1、獲取手機(jī)上電話、短信等各種功能的編程2、了解手機(jī)上各種傳感器的功能與使用方法【原理】利用手機(jī)本身的功能與相關(guān)傳感器的使用【過程】1、了解程序使用手機(jī)電話功能的方法短信收發(fā):SmsManagersms=SmsManager.getDefault();PendingIntentSmsManagersms=SmsManager.getDefault();PendingIntentpi=PendingIntent.getBroadcast(this,0,newIntent(),0);sms.sendTextMessage(phoneNumber,null,MsgStr,pi,null);其中參數(shù)phoneNumber和MsgStr均是String類型,表示接收方的電話號(hào)碼和短信內(nèi)容◆接收短信主要是繼承BroadcaseReceiver類,覆蓋onReceive函數(shù):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();//短消息發(fā)送成功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"); //模擬器之間互發(fā)短信txt=(EditText)findViewById(R.id.EditText02);txt.setText("我用自己的程序試試發(fā)短信。");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,"請(qǐng)重新輸入電話號(hào)碼和短信內(nèi)容"}}});}privatevoidsendSMS(Stringaddress,Stringcontent){rr=.ti=w(//生成PendingIntent,當(dāng)消息發(fā)送完成,接收到廣播PendingIntentsentIntent=PendingIntent.getBroadcast(thisthis,0,i,.manager.sendTextMessage(address,null,content,sentIntent,null);}}如果要收發(fā)短信,還需在AndroidManifest.xml中聲明權(quán)限:<uses-permission<uses-permission2AndroidSDK中提供的面向硬件的特性特性android.hardware.Cameraandroid.hardware.SensorManagerandroid.hardware.SensorListener
描述相機(jī)交互的類,可以截取照片、獲取預(yù)覽屏幕的圖像,修改理相機(jī)操作的參數(shù)。允許訪問Android平臺(tái)傳感器的類。并非所有配備Android的設(shè)備都支持SensorManager中的所有傳感器。在傳感器值實(shí)時(shí)更改時(shí),希望接收更新的類要實(shí)現(xiàn)的接口。用以監(jiān)視android.media.MediaRecorderandroid.FaceDetectorandroid.os.*
硬件中一個(gè)或多個(gè)可用傳感器。用于錄制媒體的類。人臉進(jìn)行基本識(shí)別類??梢耘c操作環(huán)境交互的包,包括電源管理、文件查看器、處理器和消息類。android.hardware.SensorManager包含幾個(gè)常量,這表示Android傳感器系統(tǒng)的不同方面,包括:用戶界面。不保證特定的采樣率可用。準(zhǔn)確性高、低、中、不可靠。SensorListener接口是傳感器應(yīng)用程序的中心。它包括兩個(gè)必需方法:onSensorChanged(intsensor,floatvalues[])方法在傳感器值更改時(shí)調(diào)用。該方法只對(duì)受此應(yīng)用程序監(jiān)視的傳感器調(diào)用。該方法的參數(shù)包括:? 一個(gè)整數(shù),指示更改的傳感器;? 提供三個(gè)浮點(diǎn)值。方向和加速表傳感器都提供三個(gè)數(shù)據(jù)值。當(dāng)傳感器的準(zhǔn)確性更改時(shí),將調(diào)用onAccuracyChanged(intsensor,intaccuracy)方法。參數(shù)包括兩個(gè)整數(shù):一個(gè)表示傳感器,另一個(gè)表示該傳感器新的準(zhǔn)確值。要與傳感器交互,應(yīng)用程序必須注冊(cè)以偵聽與一個(gè)或多個(gè)傳感器相關(guān)的活動(dòng)。注冊(cè)使用SensorManager類的registerListener方法完成。并非所有支持Android的設(shè)備都支持SDK中定義的所有傳感器。以Android為中心的傳感器系統(tǒng)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格式的數(shù)據(jù)privatePictureCallbackjpegCallback=newPictureCallback(){publicvoidonPictureTaken(byte[]data,Cameracamera){Parametersps=camera.getParameters();if(ps.getPictureFormat()==PixelFormat.JPEG){//存儲(chǔ)拍照獲得的圖片Stringpathsave(data);//將圖片交給Image程序處理Uriuri=Uri.fromFile(newFile(path));Intentintent=newIntent();intent.setAction("ent.action.VIEW");intent.setDataAndType(uri,"image/jpeg");startActivity(intent);}}};//快門按下的時(shí)候onShutter()被回調(diào)privateShutterCallbackshutterCallback=newShutterCallback(){publicvoidonShutter(){if(tone==null)//發(fā)出提示用戶的聲音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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年互聯(lián)網(wǎng)醫(yī)療解決方案技術(shù)合作協(xié)議
- 2025年雙方協(xié)商勞務(wù)派遣協(xié)議
- 2025年P(guān)PP項(xiàng)目合作財(cái)務(wù)管理協(xié)議
- 主材供應(yīng)及合作框架合同 2024年版一
- 2025版區(qū)塊鏈技術(shù)應(yīng)用合伙人合作協(xié)議3篇
- 2025年度智能建筑安裝工程承包技師合同4篇
- 二零二五年度酒吧食品安全管理與承包合同
- 2025年度城市公交車定點(diǎn)維修與應(yīng)急保障合同
- 二零二五年度汽車維修免責(zé)聲明適用于車主自帶配件
- 2025年度地鐵隧道鋼筋工勞務(wù)施工安全質(zhì)量保障合同
- 建筑結(jié)構(gòu)課程設(shè)計(jì)成果
- 班級(jí)建設(shè)方案中等職業(yè)學(xué)校班主任能力大賽
- 纖維增強(qiáng)復(fù)合材料 單向增強(qiáng)材料Ⅰ型-Ⅱ 型混合層間斷裂韌性的測(cè)定 編制說明
- 習(xí)近平法治思想概論教學(xué)課件緒論
- 寵物會(huì)展策劃設(shè)計(jì)方案
- 孤殘兒童護(hù)理員(四級(jí))試題
- 梁湘潤(rùn)《子平基礎(chǔ)概要》簡(jiǎn)體版
- 醫(yī)院急診醫(yī)學(xué)小講課課件:急診呼吸衰竭的處理
- 腸梗阻導(dǎo)管在臨床中的使用及護(hù)理課件
- 小學(xué)英語單詞匯總大全打印
- 衛(wèi)生健康系統(tǒng)安全生產(chǎn)隱患全面排查
評(píng)論
0/150
提交評(píng)論