當前位置:首頁 » 安卓系統 » android代碼模板

android代碼模板

發布時間: 2023-02-09 05:10:18

『壹』 Android Studio 比 Eclipse 好用在哪裡

Android相比Eclipse有幾個有點:
1.強大的預覽效果,顏色、圖片在布局和代碼中可以實時預覽,當引用顏色和小圖標時,左邊欄實時預覽,而Eclipse只能運行才能看效果。
2.gradle編譯項目,不管遠程依賴還是本地依賴都只需較簡單代碼,build.gradle文件還可以靈活配置。
3.可以安裝各種插件,提高開發效率。
4.Android Studio智能提示功能更加強大,Eclispe提示還需配置。
5.支持Live Templates,還可以自定義代碼模板快捷鍵。

『貳』 android_studio手機藍牙串口通信源代碼

初涉android的藍牙操作,按照固定MAC地址連接獲取Device時,程序始終是異常終止,查了好多天代碼都沒查出原因。今天改了一下API版本,突然就成功連接了。總結之後發現果然是個坑爹之極的錯誤。

為了這種錯誤拚命查原因浪費大把時間是非常不值得的,但是問題不解決更是揪心。可惜我網路了那麼多,都沒有給出確切原因。今天特此mark,希望後來者遇到這個問題的時候能輕松解決。

下面是我的連接過程,中間崩潰原因及解決辦法。

1:用AT指令獲得藍牙串口的MAC地址,地址是簡寫的,按照常理猜測可得標准格式。

2:開一個String adress= "************" //MAC地址, String MY_UUID= "************"//UUID根據通信而定,網上都有。

3:取得本地Adapter用getDefaultAdapter(); 遠程的則用getRemoteDevice(adress); 之後便可用UUID開socket進行通信。

如果中途各種在getRemoteDevice處崩潰,大家可以查看一下當前的API版本,如果是2.1或以下版本的話,便能確定是API版本問題,只要換成2.2或者以上就都可以正常運行了~ 這么坑爹的錯誤的確很為難初學者。 唉·········· 為這種小trick浪費很多時間真是難過。

(另外有個重要地方,別忘了給manifest裡面加以下兩個藍牙操作許可權哦~)

  • <uses-permissionandroid:name="android.permission.BLUETOOTH"></uses-permission>

  • <uses-permissionandroid:name="android.permission.BLUETOOTH_ADMIN"></uses-permission>

  • 下面附上Android藍牙操作中用固定MAC地址傳輸信息的模板,通用搜索模式日後再補刪模板:

  • =null;

  • =null;

  • privateOutputStreamoutStream=null;

  • privateInputStreaminStream=null;

  • privatestaticfinalUUIDMY_UUID=UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//這條是藍牙串口通用的UUID,不要更改

  • privatestaticStringaddress="00:12:02:22:06:61";//<==要連接的藍牙設備MAC地址

  • /*獲得通信線路過程*/

  • /*1:獲取本地BlueToothAdapter*/

  • mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();

  • if(mBluetoothAdapter==null)

  • {

  • Toast.makeText(this,"Bluetoothisnotavailable.",Toast.LENGTH_LONG).show();

  • finish();

  • return;

  • }

  • if(!mBluetoothAdapter.isEnabled())

  • {

  • Toast.makeText(this,"-runthisprogram.",Toast.LENGTH_LONG).show();

  • finish();

  • return;

  • }

  • /*2:獲取遠程BlueToothDevice*/

  • BluetoothDevicedevice=mBluetoothAdapter.getRemoteDevice(address);

  • if(mBluetoothAdapter==null)

  • {

  • Toast.makeText(this,"Can'tgetremotedevice.",Toast.LENGTH_LONG).show();

  • finish();

  • return;

  • }

  • /*3:獲得Socket*/

  • try{

  • btSocket=device.(MY_UUID);

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Socketcreationfailed.",e);

  • }

  • /*4:取消discovered節省資源*/

  • mBluetoothAdapter.cancelDiscovery();

  • /*5:連接*/

  • try{

  • btSocket.connect();

  • Log.e(TAG,"ONRESUME:BTconnectionestablished,datatransferlinkopen.");

  • }catch(IOExceptione){

  • try{

  • btSocket.close();

  • }catch(IOExceptione2){

  • Log.e(TAG,"ONRESUME:",e2);

  • }

  • }

  • /*此時可以通信了,放在任意函數中*/

  • /*try{

  • outStream=btSocket.getOutputStream();

  • inStream=btSocket.getInputStream();//可在TextView里顯示

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Outputstreamcreationfailed.",e);

  • }

  • Stringmessage="1";

  • byte[]msgBuffer=message.getBytes();

  • try{

  • outStream.write(msgBuffer);

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);

  • }

  • */

  • 通用搜索模式代碼模板:

    簡潔簡潔方式1 demo


    作用: 用VerticalSeekBar控制一個 LED屏幕的亮暗。

    直接上碼咯~

  • packagecom.example.seed2;

  • importandroid.app.Activity;

  • importandroid.app.AlertDialog;

  • importandroid.app.Dialog;

  • importandroid.os.Bundle;

  • importjava.io.IOException;

  • importjava.io.InputStream;

  • importjava.io.OutputStream;

  • importjava.util.UUID;

  • importandroid.bluetooth.BluetoothAdapter;

  • importandroid.bluetooth.BluetoothDevice;

  • importandroid.bluetooth.BluetoothSocket;

  • importandroid.content.DialogInterface;

  • importandroid.util.Log;

  • importandroid.view.KeyEvent;

  • importandroid.widget.Toast;

  • {

  • privatestaticfinalStringTAG="BluetoothTest";

  • =null;

  • =null;

  • privateOutputStreamoutStream=null;

  • privateInputStreaminStream=null;

  • privateVerticalSeekBarvskb=null;

  • privatestaticfinalUUIDMY_UUID=UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");//這條是藍牙串口通用的UUID,不要更改

  • privatestaticStringaddress="00:12:02:22:06:61";//<==要連接的藍牙設備MAC地址

  • /**.*/

  • @Override

  • publicvoidonCreate(BundlesavedInstanceState){

  • super.onCreate(savedInstanceState);

  • setContentView(R.layout.main);

  • this.vskb=(VerticalSeekBar)super.findViewById(R.id.mskb);

  • this.vskb.setOnSeekBarChangeListener(newOnSeekBarChangeListenerX());

  • mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();

  • if(mBluetoothAdapter==null)

  • {

  • Toast.makeText(this,"Bluetoothisnotavailable.",Toast.LENGTH_LONG).show();

  • finish();

  • return;

  • }

  • if(!mBluetoothAdapter.isEnabled())

  • {

  • Toast.makeText(this,"-runthisprogram.",Toast.LENGTH_LONG).show();

  • finish();

  • return;

  • }

  • }

  • .OnSeekBarChangeListener{

  • publicvoidonProgressChanged(VerticalSeekBarseekBar,intprogress,booleanfromUser){

  • //Main.this.clue.setText(seekBar.getProgress());

  • /*Stringmessage;

  • byte[]msgBuffer;

  • try{

  • outStream=btSocket.getOutputStream();

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:OutputStreamcreationfailed.",e);

  • }

  • message=Integer.toString(seekBar.getProgress());

  • msgBuffer=message.getBytes();

  • try{

  • outStream.write(msgBuffer);

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);

  • }*/

  • }

  • (VerticalSeekBarseekBar){

  • Stringmessage;

  • byte[]msgBuffer;

  • try{

  • outStream=btSocket.getOutputStream();

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:OutputStreamcreationfailed.",e);

  • }

  • message=Integer.toString(seekBar.getProgress());

  • msgBuffer=message.getBytes();

  • try{

  • outStream.write(msgBuffer);

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);

  • }

  • }

  • publicvoidonStopTrackingTouch(VerticalSeekBarseekBar){

  • Stringmessage;

  • byte[]msgBuffer;

  • try{

  • outStream=btSocket.getOutputStream();

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:OutputStreamcreationfailed.",e);

  • }

  • message=Integer.toString(seekBar.getProgress());

  • msgBuffer=message.getBytes();

  • try{

  • outStream.write(msgBuffer);

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);

  • }

  • }

  • }

  • @Override

  • publicvoidonStart()

  • {

  • super.onStart();

  • }

  • @Override

  • publicvoidonResume()

  • {

  • super.onResume();

  • BluetoothDevicedevice=mBluetoothAdapter.getRemoteDevice(address);

  • try{

  • btSocket=device.(MY_UUID);

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Socketcreationfailed.",e);

  • }

  • mBluetoothAdapter.cancelDiscovery();

  • try{

  • btSocket.connect();

  • Log.e(TAG,"ONRESUME:BTconnectionestablished,datatransferlinkopen.");

  • }catch(IOExceptione){

  • try{

  • btSocket.close();

  • }catch(IOExceptione2){

  • Log.e(TAG,"ONRESUME:",e2);

  • }

  • }

  • //.

  • /*try{

  • outStream=btSocket.getOutputStream();

  • inStream=btSocket.getInputStream();

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Outputstreamcreationfailed.",e);

  • }

  • Stringmessage="read";

  • byte[]msgBuffer=message.getBytes();

  • try{

  • outStream.write(msgBuffer);

  • }catch(IOExceptione){

  • Log.e(TAG,"ONRESUME:Exceptionringwrite.",e);

  • }

  • intret=-1;

  • while(ret!=-1)

  • {

  • try{

  • ret=inStream.read();

  • }catch(IOExceptione)

  • {

  • e.printStackTrace();

  • }

  • }

  • */

  • }

  • @Override

『叄』 安裝EclipseNeonR64+Could not find folder 'tools' inside SDK 'D:\Android

安裝SDK這里主要介紹如何安裝Android的SDK開發包和配置開發環境。如果你還沒有下載SDK,點擊下面的鏈接開始。DownloadtheAndroidSDK系統和軟體配置要求要通過AndroidSDK中提供的代碼和工具進行Android應用程序的開發,需要一個合適的用於開發的電腦和合適的開發環境,具體要求如下:支持的開發環境EclipseEclipse3.2,3.3(Europa)Android開發工具插件(可選)其他的開發環境或者IDEJDK5.0或者JDK6.0(僅有JRE是不夠的)安裝SDK下載好SDK包後,將zip文件解壓縮至合適的地方。在下文中,我們默認你的SDK安裝目錄為$SDK_ROOT你可以選擇將$SDK_ROOT/tools加入到你的路徑中1.Linux下,打開文件~/.bash_profile或者~/.bashrc,找到設定PATH環境變數的一行,將$SDK_ROOT/tools的完整路徑加入其中。如果沒有找到設定PATH變數的行,你可以自己添加一行:exportPATH=${PATH}:2.Mac下,在你的home目錄中找到文件.bash_profile,和Linux的一樣處理。如果還沒有在機器上設定這個文件,你可以創建一個.bash_profile文件。3.Windows下,右鍵點擊【我的電腦】,選擇【屬性】,在【高級】頁中,點擊【環境變數】按鍵,在彈出的對話框中雙擊「系統變數」中的變數「Path」,將$SDK/tools的完全路徑加入其中。通過將$SDK/tools加入系統路徑,在運行adb和其它一些命令行工具時就不需要鍵入完全路徑名了。需要注意到是,當你升級了SDK後,如果安裝路徑有變動的話,不要忘記了更新你的PATH變數的設置,將其指向變動後的路徑。安裝Eclipse插件(ADT)如果你選擇Eclipse作為Android的開發環境,可以安裝一個專門為Android定製的插件:AndroidDevelopmentTools(ADT),ADT插件集成了對Android工程和工具的支持,它包含了大量功能強大的擴展,使得創建、運行、調試Android程序更簡單更快捷。如果你不打算使用Eclipse,那麼就不需要下載或者安裝ADT插件。為了下載和安裝ADT插件,請按照下面的步驟設置Eclipse的遠程更新站點:1.啟動Eclipse,依次選擇Help>SoftwareUpdates>FindandInstall.此主題相關圖片如下:2.在彈出的窗口中,選擇Searchfornewfeaturestoinstall,然後點擊Next3.點擊NewRemoteSite4.在彈出的對話框中,為遠程站點輸入一個自定義的名字(例如:AndroidPlugin),然後輸入下面的內容作為其默認的URL:然後點擊OKandroid/eclipse/"target="_blank">/android/eclipse/5.現在你應該可以在搜索列表中看見剛才新加入的站點了(默認已經選中了),點擊Finish6.在隨後的SearchResults對話框中,選中AndroidPlugin>EclipseIntegration>AndroidDevelopmentTools,然後點擊Next7.閱讀許可協議,然後選擇,點擊Next8.點擊Finish9.ADT插件沒有signed,在安裝過程中會彈出確認窗口,你只需要點擊InstallAll就可以了10.重啟Eclipse11.重啟後,在Eclipse的Preferences中指定SDK的路徑:a.選擇Window>Preferences打開Preference的面板。(MacOSX:Eclipse>Preferences)b.在左側的面板中選擇Androidc.在主面板中,點擊Browse定位到SDK的目錄d.點擊Apply,然後點擊OK更新ADT插件按照下面的步驟將你的ADT插件升級到最新版本:1.選擇Help>SoftwareUpdates>FindandInstall2.選擇,然後點擊Finish3.如果ADT插件有任何更新,選擇並且安裝第二篇:創建一個helloAndroid工程創建一個新項目是很簡單的,只要你安裝了AndroidSDK,並且你的Eclipse軟體版本在3.2或3.3,你就可以開始開發了。首先,看一下要創建"Hello,World"程序從高級層面上有哪些步驟:1,通過File->New->Project菜單,建立新項目"AndroidProject"2,填寫新項目各種參數。3,編輯自動生成的代碼模板。盡此而已,我們通過下面的詳細說明來完成每個步驟。1,創建一個新的Android項目啟動Eclipse,選擇File->New->Project菜單,如果你安裝好了Android的Eclipse插件,你將會在彈出的對話框中看到"AndroidProject"的選項。此主題相關圖片如下:選擇「AndroidProject」,點擊Next按鈕。2,填寫項目的細節參數.下面的對話框需要你輸入與項目有關的參數:此主題相關圖片如下:這個表格中詳細介紹了每個參數的含義:ProjectName:包含這個項目的文件夾的名稱。PackageName:包名,遵循JAVA規范,用包名來區分不同的類是很重要的,例子中用到的是"com.google.android",你應該按照你的計劃起一個有別於這個的路徑的名稱。ActivityName:這是項目的主類名,這個類將會是Android的Activity類的子類。一個Activity類是一個簡單的啟動程序和控製程序的類。它可以根據需要創建界面,但不是必須的。ApplicationName:一個易讀的標題在你的應用程序上。在"選擇欄"的"Usedefaultlocation"選項,允許你選擇一個已存在的項目。3,編輯自動生成的代碼。當項目創建後,你剛才創建的HelloAndroid就會是包含下面的代碼.{/**.*/@OverridepublicvoidonCreate(Bundleicicle){super.onCreate(icicle);setContentView(R.layout.main);}}下面我們開始修改它[構建界面]當一個項目建立好以後,最直接的效果,就是在屏幕上顯示一些文本,下面是完成後的代碼,稍後我們在逐行解釋。{/**.*/@OverridepublicvoidonCreate(Bundleicicle){super.onCreate(icicle);TextViewtv=newTextView(this);tv.setText("Hello,Android");setContentView(tv);}}注意你還需要添加importandroid.widget.TextView;在代碼開端處。在Android程序中,用戶界面是由叫做Views類來組織的。一個View可以簡單理解為可以繪制的對象,像選擇按鈕,一個動畫,或者一個文本標簽(這個程序中),這個顯示文本標簽的View子類叫做TextView.如何構造一個TextView:TexiViewtv=newTextView(this);TextView的構造參數是Android程序的Context實例,Context可以控制系統調用,它提供了諸如資源解析,訪問資料庫等等。Activity類繼承自Context類,因為我們的HelloAndroid是Activity的子類,所以它也是一個Context類,所以我們能用"this"在TextView構造中。當我們構造完TextView後,我們需要告訴它顯示什麼:tv.setText("Hello,Android");這個步驟很簡單,當我們完成了這些步驟以後,最後要把TextView顯示在屏幕上。setContentView(tv);Activity的setContentView()方法指示出系統要用哪個View作為Activity的界面,如果一個Activity類沒有執行這個方法,將會沒有界面並且顯示白屏。在這個程序中,我們要顯示文本,所以我們傳入已創建好的TextView。好了,程序代碼已經寫好,下面看看運行效果。運行代碼:Hello,Android使用Android的Eclipse插件就可以很輕松的運行你的程序,選擇Run->OpenRunDialog。你將會看到下面的對話框此主題相關圖片如下:下一步,高亮"AndroidApplication"標簽,然後按下左上角的圖標(就是像一片紙帶個小星星那個),或者直接雙擊"AndroidApplication"標簽,你將會看到一個新的運行項目,名為"New_configuration".此主題相關圖片如下:取一個可以表意的名稱,比如"Hello,Android",然後通過Browser按鈕選取你的項目(如果你有很多個項目在Eclipse中,確保你選擇要運行的項目),然後插件會自動搜索在你的項目中的Activity類並且將所有找到的添加在"Activity"標簽的下拉列表中。我們只有"Hello,Android"一個項目,所以它會作為默認選擇。點擊"Apply"按鈕,下圖此主題相關圖片如下:到這里,已經完成了,你只需要點擊"Run"按鈕,然後Android的模擬器將會啟動,你的應用程序就會被顯示出來。此主題相關圖片如下:

『肆』 常用的android開發框架有哪些

主要分為以下幾種:

1、volley
項目地址 https://github.com/smanikandan14/Volley-demo
(1) JSON,圖像等的非同步下載;
(2) 網路請求的排序(scheling)
(3) 網路請求的優先順序處理
(4) 緩存
(5) 多級別取消請求
(6) 和Activity和生命周期的聯動(Activity結束時同時取消所有網路請求)

2、Android-async-http
項目地址:https://github.com/loopj/android-async-http
文檔介紹:http://loopj.com/android-async-http/
(1) 在匿名回調中處理請求結果
(2) 在UI線程外進行http請求
(3) 文件斷點上傳
(4) 智能重試
(5) 默認gzip壓縮
(6) 支持解析成Json格式
(7) 可將Cookies持久化到SharedPreferences

3、Afinal框架
項目地址:https://github.com/yangfuhai/afinal
主要有四大模塊:
(1) 資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI綁定和事件綁定。無需findViewById和setClickListener等。
(3) 網路模塊:通過httpclient進行封裝http數據請求,支持ajax方式載入,支持下載、上傳文件功能。
(4) 圖片緩存模塊:通過FinalBitmap,imageview載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
FinalBitmap可以配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等。FinalBitmap的內存管理使用lru演算法
沒有使用弱引用(android2.3以後google已經不建議使用弱引用,android2.3後強行回收軟引用和弱引用,詳情查看android官方文檔),
更好的管理bitmap內存。FinalBitmap可以自定義下載器,用來擴展其他協議顯示網路圖片,比如ftp等。同時可以自定義bitmap顯示器,
在imageview顯示圖片的時候播放動畫等(默認是漸變動畫顯示)。

4、xUtils框架
項目地址:https://github.com/wyouflf/xUtils
主要有四大模塊:
(1) 資料庫模塊:android中的orm框架,一行代碼就可以進行增刪改查;
支持事務,默認關閉;
可通過註解自定義表名,列名,外鍵,唯一性約束,NOT NULL約束,CHECK約束等(需要混淆的時候請註解表名和列名);
支持綁定外鍵,保存實體時外鍵關聯實體自動保存或更新;
自動載入外鍵關聯實體,支持延時載入;
支持鏈式表達查詢,更直觀的查詢語義,參考下面的介紹或sample中的例子。

(2) 註解模塊:android中的ioc框架,完全註解方式就可以進行UI,資源和事件綁定;
新的事件綁定方式,使用混淆工具混淆後仍可正常工作;
目前支持常用的20種事件綁定,參見ViewCommonEventListener類和包com.lidroid.xutils.view.annotation.event。

(3) 網路模塊:支持同步,非同步方式的請求;
支持大文件上傳,上傳大文件不會oom;
支持GET,POST,PUT,MOVE,COPY,DELETE,HEAD,OPTIONS,TRACE,CONNECT請求;
下載支持301/302重定向,支持設置是否根據Content-Disposition重命名下載的文件;
返迴文本內容的請求(默認只啟用了GET請求)支持緩存,可設置默認過期時間和針對當前請求的過期時間。

(4) 圖片緩存模塊:載入bitmap的時候無需考慮bitmap載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象;
支持載入網路圖片和本地圖片;
內存管理使用lru演算法,更好的管理bitmap內存;
可配置線程載入線程數量,緩存大小,緩存路徑,載入顯示動畫等...

5、ThinkAndroid
項目地址:https://github.com/white-cat/ThinkAndroid
主要有以下模塊:
(1) MVC模塊:實現視圖與模型的分離。
(2) ioc模塊:android中的ioc模塊,完全註解方式就可以進行UI綁定、res中的資源的讀取、以及對象的初始化。
(3) 資料庫模塊:android中的orm框架,使用了線程池對sqlite進行操作。
(4) http模塊:通過httpclient進行封裝http數據請求,支持非同步及同步方式載入。
(5) 緩存模塊:通過簡單的配置及設計可以很好的實現緩存,對緩存可以隨意的配置
(6) 圖片緩存模塊:imageview載入圖片的時候無需考慮圖片載入過程中出現的oom和android容器快速滑動時候出現的圖片錯位等現象。
(7) 配置器模塊:可以對簡易的實現配對配置的操作,目前配置文件可以支持Preference、Properties對配置進行存取。
(8) 日誌列印模塊:可以較快的輕易的是實現日誌列印,支持日誌列印的擴展,目前支持對sdcard寫入本地列印、以及控制台列印
(9) 下載器模塊:可以簡單的實現多線程下載、後台下載、斷點續傳、對下載進行控制、如開始、暫停、刪除等等。
(10) 網路狀態檢測模塊:當網路狀態改變時,對其進行檢

6、LoonAndroid
項目地址:https://github.com/gdpancheng/LoonAndroid
主要有以下模塊:
(1) 自動注入框架(只需要繼承框架內的application既可)
(2) 圖片載入框架(多重緩存,自動回收,最大限度保證內存的安全性)
(3) 網路請求模塊(繼承了基本上現在所有的http請求)
(4) eventbus(集成一個開源的框架)
(5) 驗證框架(集成開源框架)
(6) json解析(支持解析成集合或者對象)
(7) 資料庫(不知道是哪位寫的 忘記了)
(8) 多線程斷點下載(自動判斷是否支持多線程,判斷是否是重定向)
(9) 自動更新模塊
(10) 一系列工具類

7、KJFrameForAndroid

項目地址:http://git.oschina.net/kymjs/KJFrameForAndroid#git-readme
github項目地址:https://github.com/kymjs/KJFrameForAndroid
備用項目地址:http://git.oschina.net/kymjs/KJFrameForAndroid

KJFrameForAndroid 又叫KJLibrary,是一個android的orm 和 ioc 框架。同時封裝了android中的Bitmap與Http操作的框架,使其更加簡單易用;
KJFrameForAndroid的設計思想是通過封裝Android原生SDK中復雜的復雜操作而達到簡化Android應用級開發,最終實現快速而又安全的開發APP。我們提倡用最少的代碼,完成最多的操作,用最高的效率,完成最復雜的功能。
同時,KJFrameForAndroid是免費的、開源的、簡易的、遵循Apache Licence 2.0開源協議發布的android應用開發框架,總共分為五大模 塊:UILibrary,UtilsLibrary,HttpLibrary,BitmapLibrary,DBLibrary。

8、AndroidAnnotations
xUtils是國內比較火的快速開發框架,但是它的註解機制不是太穩定而且註解可選也比較少,國外的一個框架主要專注於註解的開發,簡化Android代碼編寫,它除了有依賴注入的特性以外,還集成了Ormlite,Spring-android中的REST模板。使用起來非常方便,大大提高了開發效率。

1.下載AndroidAnnotations:
git官網:https://github.com/excilys/androidannotations

項目中重要的兩個jar包分別是:androidannotations-api-3.0.1.jar和androidannotations-3.0.1.jar
2.新建一個android項目,然後將androidannotations-api-3.0.1.jar復制到libs目錄下,在項目的根目錄新建一個文件夾,命名為compile-libs,然後將androidannotations-3.0.1.jar復制到該目錄下
3.在你的工程上右鍵單擊,在彈出的菜單中選擇"Properties",找到Java Compiler,確保Compiler compliance level設置為1.6,否則的話處理器將不起作用
4.然後設置項目屬性:右鍵->Properties->Java Compiler->Annotation Processing 在該頁面選中Enable project specific settings。
5.轉到Java Compiler 中的 Annotation Processing 下邊的 Factory Path,在此將androidannotations-3.0.1.jar添加到其中。

註解1:@ViewById 與findViewById功能相似,如果ViewById後沒有設置資源ID的話,就是自動查找與變數名稱相同的id資源。
註解2:@Click 點擊事件處理的註解。
註解3:@UiThread 後台Ui線程的註解,省去了Handler等等。
註解4:@EActivity 提示Activity的註解,注意,該註解將Activity編譯成Activity_,注意,多一個下劃線「_」,因此在AndroidManifest.xml文件中需要將其添加下滑線
註解5:@AfterViews 是指View類注入完畢之後執行的代碼。

『伍』 求做一份Android期末作業,模板可以自己在網上下載,只需要簡單的改改開發者的信息的有關代碼,此

有登錄窗口,至少3個以上的界面,實現系統響應功能。

年輕人要好好學習。。。這個東西你好好看看書,,,對於你來說是很簡單的事情。。。

『陸』 android studio 如何修改布局標簽模板

RelativeLayoutlayout=(RelativeLayout)findViewById(R.id.layout);Buttonbut=newButton(this);RelativeLayout.LayoutParamslp=newRelativeLayout.LayoutParams(50,50);lp.addRule(RelativeLayout.ALIGN_TOP,R.id.button);lp.add.

『柒』 android開發音樂播放器MediaPlayer.prepare()

MediaPlayer類可用於控制音頻/視頻文件或流的播放,我曾在《Android開發之基於Service的音樂播放器》一文中介紹過它的使用。下面讓我們看一下MediaPlayer類的詳細介紹。
一、類結構:

java.lang.Object



android.media.MediaPlayer

二、構造方法和公有方法
構造方法:

Public Constructors

MediaPlayer()
默認構造方法。

公有方法:

Public Methods

static MediaPlayer

create(Context context, Uri uri, SurfaceHolder holder)
指定從資源ID對應的資源文件中來裝載音樂文件,同時指定了SurfaceHolder對象並返回MediaPlyaer對象。

static MediaPlayer

create(Context context, int resid)
指定從資源ID對應的資源文件中來裝載音樂文件,並返回新創建的MediaPlyaer對象。

static MediaPlayer

create(Context context, Uri uri)
從指定Uri裝在音頻文件,並返回新創建的MediaPlayer對象。

int

getCurrentPosition()
獲取當前播放的位置。

int

getDuration()
獲取音頻的時長。

int

getVideoHeight()
獲取視頻的高度。

int

getVideoWidth()
獲取視頻的寬度。

boolean

isLooping()
判斷MediaPlayer是否正在循環播放。

boolean

isPlaying()
判斷MediaPlayer是否正在播放。

void

pause()
暫停播放。

void

prepare()
准備播放(裝載音頻),調用此方法會使MediaPlayer進入Prepared狀態。

void

prepareAsync()
准備播放非同步音頻。

void

release()
釋放媒體資源。

void

reset()
重置MediaPlayer進入未初始化狀態。

void

seekTo(int msec)
尋找指定的時間位置。

void

setAudioStreamType(int streamtype)
設置音頻流的類型。

void

setDataSource(String path)
指定裝載path路徑所代表的文件。

void

setDataSource(Context context, Uri uri, Map<String, String headers)
指定裝載uri所代表的文件。

void

setDataSource(Context context, Uri uri)
指定裝載uri所代表的文件。

void

setDataSource(FileDescriptor fd, long offset, long length)
指定裝載fd所代表的文件中從offset開始長度為length的文件內容。

void

setDataSource(FileDescriptor fd)
指定裝載fd所代表的文件。

void

setDisplay(SurfaceHolder sh)
設置顯示方式。

void

setLooping(boolean looping)
設置是否循環播放。

void

setNextMediaPlayer(MediaPlayer next)
設置當前流媒體播放完畢,下一個播放的MediaPlayer。

void

setOnBufferingUpdateListener(MediaPlayer.OnBufferingUpdateListener listener)
注冊一個回調函數,在網路視頻流緩沖變化時調用。

void

setOnCompletionListener(MediaPlayer.OnCompletionListener listener)
為Media Player的播放完成事件綁定事件監聽器。

void

setOnErrorListener(MediaPlayer.OnErrorListener listener)
為MediaPlayer的播放錯誤事件綁定事件監聽器。

void

setOnPreparedListener(MediaPlayer.OnPreparedListener listener)
當MediaPlayer調用prepare()方法時觸發該監聽器。

void

setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener)
當MediaPlayer調用seek()方法時觸發該監聽器。

void

setOnVideoSizeChangedListener(MediaPlayer.OnVideoSizeChangedListener listener)
注冊一個用於監聽視頻大小改變的監聽器。

void

setScreenOnWhilePlaying(boolean screenOn)
置是否使用SurfaceHolder來顯示。

void

setSurface(Surface surface)
設置Surface。

void

setVideoScalingMode(int mode)
設置視頻縮放的模式。

void

setVolume(float leftVolume, float rightVolume)
設置播放器的音量。

void

setWakeMode(Context context, int mode)
為MediaPlayer設置低級電源管理行為。.

void

start()
開始或恢復播放。

void

stop()
停止播放。

三、常用方法分析:
1.使用進度條:
進度條SeekBar可以用來顯示播放進度,用戶也可以利用SeekBar的滑塊來控制音樂的播放。
SeekBar需要使用的一些方法:
setProgress(int value):設置滑塊的位置方法為。
setMax(int value):設置進度條的最大長度。
setOnSeekBarChangeListener(OnSeekBarChangeListener l):設置SeekBar的進度改變事件。
MusicPlayer需要使用的一些方法:
getDuration():獲得音樂長度為。
getCurrentPosition():獲得現在播放的位置。
seekTo(int msec):調用seekTo()方法可以調整播放的位置。
seekTo(int)方法是非同步執行的,所以它可以馬上返回,但是實際的定位播放操作可能需要一段時間才能完成,尤其是播放流形式的音頻/視頻。當實際的定位播放操作完成之後,內部的播放引擎會調用客戶端程序員提供的OnSeekComplete.onSeekComplete()回調方法。可以通過setOnSeekCompleteListener(OnSeekCompleteListener)方法注冊。
seekTo(int)方法也可以在其它狀態下調用,比如Prepared,Paused和PlaybackCompleted狀態。此外,目前的播放位置,實際可以調用getCurrentPosition()方法得到,它可以幫助如音樂播放器的應用程序不斷更新播放進度。
創建並使用進度條的步驟:
第一步:創建一個進度條

//進度條
static SeekBarskbMusic;
skbMusic=(SeekBar)findViewById(R.id.skbMusic);

第二步:為進度條的改變事件注冊並添加監聽器

skbMusic.setOnSeekBarChangeListener(sChangeListener);
/**
* SeekBar進度改變事件
*/
=new OnSeekBarChangeListener() {
@Override
publicvoid onStopTrackingTouch(SeekBar seekBar) {
//TODO Auto-generated method stub
//當拖動停止後,控制mediaPlayer播放指定位置的音樂
MusicService.mediaPlayer.seekTo(seekBar.getProgress());
MusicService.isChanging=false;
}
@Override
publicvoid onStartTrackingTouch(SeekBar seekBar) {
//TODO Auto-generated method stub
MusicService.isChanging=true;
}
@Override
publicvoid onProgressChanged(SeekBar seekBar,int progress,
boolean fromUser) {
//TODO Auto-generated method stub
}
};

第三步:設置進度條的最大長度:

//getDuration()方法要在prepare()方法之後,否則會出現Attempt to call getDuration without a valid mediaplayer異常
MusicBox.skbMusic.setMax(mediaPlayer.getDuration());//設置SeekBar的長度

第四步:更新進度條

//----------定時器記錄播放進度---------//
mTimer =new Timer();
mTimerTask =new TimerTask() {
@Override
publicvoid run() {
isTimerRunning=true;
if(isChanging==true)//當用戶正在拖動進度進度條時不處理進度條的的進度
return;
MusicBox.skbMusic.setProgress(mediaPlayer.getCurrentPosition());
}
};
//每隔10毫秒檢測一下播放進度
mTimer.schele(mTimerTask, 0, 10);

2.裝載音頻文件:
為了讓MediaPlayer來裝載指定音頻文件,MediaPlayer提供了如下簡單的靜態方法。
static MediaPlayer create(Context context, Uri uri):從指定Uri來裝載音頻文件,並返回新創建的MediaPlayer對象。
static MediaPlayer create(Context context, int resid):從 resid資源 ID對應的資源文件中裝載音頻文件,並返回新創建的MediaPlayer對象。
提示:上而這兩個方法用起來非常方便,但這兩個方法每次都會返回新創建的MediaPlayer對象,如來程序需要使用MediaPlayer循環播放多個音頻文件,使用MediaPlayer的靜態create方法就不太合適了,此時可通過MediaPlayer的setDataSource()方法來裝載指定的音頻文件。MediaPlayer提供了如下方法來指定裝載相應的音頻文件。
setDataSource(String path):指定裝載path路徑所代表的文件。
setDataSource(FileDescriptor fd, long offset,long length):指定裝載fd所代表的文件中從offset開始長度為length的文件內容。
setDataSource(FileDescriptor fd):指定裝載fd所代表的文件。
setDataSource(Context context, Uri uri):指定裝載uri所代表的文件。
提示:執行上面所示的setDataSource()方法之後,MediaPlayer並未真正去裝載那些音頻文件,還需要調用MediaPlayer的prepare()方法去准備音頻,所謂「准備」,就是讓MediaPlayer真正去裝載音頻文件。
使用已有的MediaPlayer對象裝載「一首」歌曲的代碼模板為:

mPlayer.reset();
//裝戰下一竹歌曲
mPlayer.setDataSource(M/mnt/sdcard/next.mp3);
//准備聲音 mPlayer.prepare();
"播放
mPlayer.start();
}
catch (IOException e)
e.printStackTrace();
}

3.與MediaPlayer有關的事件監聽器:
MediaPlayer提供了一些綁定事件監聽器的方法,用於監聽MediaPlayer播放過程中所發生的特定事件,綁定事件監聽器的方法如下。
setOnCompletionListener(MediaPlayer.OnCompletionListener listener):為 Media Player的播放完成事件綁定事件監聽器。
setOnErrorListener(MediaPlayer.OnErrorListener listener):為MediaPlayer的播放錯誤事件綁定事件監聽器。
setOnPreparedListener(MediaPlayer.OnPreparedListener listener):當 MediaPlayer調用prepare()方法時觸發該監聽器。
setOnSeekCompleteListener(MediaPlayer.OnSeekCompleteListener listener):當MediaPlayer調用seek()方法時觸發該監聽器。
因此可以在創建一個MediaPlayer對象之後,通過為該MediaPlayer綁定監聽器來監聽相應的事件,例如如下代碼:

//為MediaPlayer的播放完成事件綁定事件監聽器
mPlayer.setOnErrorListener(new OnErrorListener() {
@Override
publicboolean onError(MediaPlayer mp,int what,int extra) {
//TODO Auto-generated method stub
//針對錯誤進行相應的處理
// ... ...
}
});
//為MediaPlayer的播放完成講件綁定市件監聽器
mPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
publicvoid onCompletion(MediaPlayer mp) {
//TODO Auto-generated method stub
current++;
prepareAndPlay(current);
}
});

四、MediaPlayer播放不同來源的音頻文件:
1.播放應用的資源文件
播放應用的資源文件需要兩步即:
1) 調用MediaPlayer的create(Context context,int resid)方法加指定資源文件。
2) 調用 MediaPlayer的 start()、pause()、stop()等方法控制播放即可。
例如如下代碼:

MediaPlayer mPlayer=new MediaPlayer();
mPlayer.create(this, R.raw.music);

2. 播放應用的原始資源文件
播放應用的資源文件按如下步驟執行。
1) 調用 Context的 getAssets()方法獲取應用的 AssetManager。
2) 調用AssetManager對象的openFd(String name)方法打開指定的原生資源,該方法返回一個AssetFileDescriptor對象。
3) 調用 AssetFileDescriptor的 getFileDescriptor()、getStartOffset()和 getLength()方法來獲取音頻文件的FileDescriptor、開始位置、長度等。
4) 創建MediaPlayer對象(或利用已有的MediaPlayer對象),並調用MediaPlayer對象的setDataSource(FileDescriptor fd,long offset, long length)方法來裝載音頻資源。
5) 調用MediaPlayer對象的prepare()方法准備音頻。
6) 調用MediaPlayer的start()、pause()、stop()等方法控制播放即可。
例如如下代碼片段:

//獲取assets目錄下指定文件的AssetFileDescriptor對象
AssetFileDescriptor assetFileDescriptor=assetManager.openFd(musics[current]);
mediaPlayer.reset();//初始化mediaPlayer對象
mediaPlayer.setDataSource(assetFileDescriptor.getFileDescriptor(), assetFileDescriptor.getStartOffset(), assetFileDescriptor.getLength());
//准備播放音樂
mediaPlayer.prepare();
//播放音樂
mediaPlayer.start();

3. 播放外部存儲器上音頻文件
播放外部存儲器上音頻文件按如下步驟執行。
1) 創建MediaPlayer對象(或利用已有的MediaPlayer對象),並調用MediaPlayer對象的setDateSource(String path)方法裝載指定的音頻文件。
2) 調用MediaPlayer對象的prepare()方法准備音頻。
3) 調用MediaPlayer的start()、pause()、stop()等方法控制播放即可。
例如如下代碼:

//載入SD卡上的指定資源音頻文件
mPlayer.setDataSource("/mnt/You Are The One.mp3");
mPlayer.prepare();//准備因音頻
mPlayer.start();//播放音頻

4.播放來自網路的音頻文件
播放來自網路的音頻文件冇兩種方式:1.直接使用MediaPlayer的靜態create(Context context, Uri uri)方法;2.調用 MediaPlayer的setDataSource(Context context,Uri uri)裝載指定Uri對應的音頻文件。
以第二種方式播放來自網路的音頻文件的步驟如下。
1. 根據網路上的音頻文件所在的位置創建Uri對象。
2. 創建MediaPlayer對象(或利用己有的MediaPlayer對象),並調用MediaPlayer對象的 setDateSource(Context context,Uri uri)方法裝載Uri對應的音頻文件。
3. 調用MediaPlayer對象的prepare()方法准備音頻。
4. 調用MediaPlayer的start()、pause()、stop()等方法控制播放即可。

『捌』 3.7發布了,在AndroidStudio中怎麼使用

一、介紹
很多android 開發者都感嘆做android開發竟然都沒有一款專門的來使用,不像IOS有Xcode,WP有VS。一般做android開發都是eclipse或者ADT或者IntelliJ IDEA。後來,終於,哈哈,有了Android Studio。Android Studio以IntelliJ IDEA為基礎,旨在取代Eclipse和ADT(Android開發者工具)為開發者提供更好的開發工具人稱「親生」的android開發IDE,本人使用了一段時間之後,發現功能真是強大,完爆eclipse等開發工具,最大的亮點就是【代碼提示】和【實時預覽布局】這兩塊。
上介紹說,Android Studio有諸多好處:
基於Gradle的構建支持
Android特定重構和快速修復
更加豐富的模板代碼,讓創建程序更加簡單
更好的提示工具,對程序性能、可用性、版本兼容和其他的問題進行捕捉控制
直接支持ProGuard和應用程序簽名功能
自帶布局編輯器,可以拖放UI組件,可以在不同的配置的屏幕上預覽布局
內置google雲服務
內置svn,git工具
支持插件安裝
總而言之,這是google自家出的IDE,肯定對android開發的支持是極好的。先貼一張圖,看看界面。
二、使用-創建項目
在Android Studio中的目錄組織結構跟在eclipse中有很大的差別。Android Studio中的project的概念和eclipse中的工作空間(workspace)的概念很相似。AS中的mole就相當於eclipse中的一個個項目。
下面開始創建一個項目,上手一下:
點擊File -> create new project
輸入application的名字,Company Domain和project的位置。然後下一步:
選擇和最低版本的SDK。點擊下一步:
可以看到Android Studio提供了很多界面的模板可供選擇,選擇一個模板,然後點擊下一步:
設置activity的相關信息。點擊finish,就完成了一個項目的創建了。
三、從eclipse導出項目到Android Studio
在eclipse中選擇file -> export ,然後選擇android下面的Generate Gradle build files
next,next之後選中要導出的項目,然後下一步,finish。
然後需要在Android Studio中,選擇file -> import project。按照上面的步驟到處的項目目錄下,會生成一個build.gradle文件,此時就需要選中這個文件,然後點擊OK。
到此為止,就完成了eclipse導出項目到Android Studio了。
四、安裝genymotion插件
大家都知道,google「親生」的模擬器啟動時很慢的,好在有了genymotion。這款啟動模擬器的速度確實是很快的。但是怎麼在Android Studio中使用Genymotion呢?看下面的步驟吧!
首先打開設置中心,使用快捷鍵【ctrl + alt + s】或者點擊面板上的圖標。然後找到【Plugs】,如圖示:
右側面板列出來的是已經安裝的插件。點擊Browse repositories..進行聯網搜索:
搜索到Genymotion之後,右側點擊install就行了,然後會提示讓你重啟一下,重啟之後,在主面板上就會顯示genymotion的一個小圖標,點擊圖標進行配置genymotion的路徑。
設置完成之後,再次點擊那個圖標就會顯示【Genymotion Device Manager】。
OK,設置完畢!!!
五、使用第三方類庫
六、刪除一個項目
下面來看一下,怎麼在Android Studio中刪除一個項目(mole)。
首先右鍵一個項目,選擇【Open Mole Settings】或者選中項目之後,按【F4】,然後出來mole的設置界面。在這里可以進行很多設置,比如【Min Sdk Version】、【Target Sdk Version】、【Version Code】、【Version Name】等等。
在此面板左側,選中一個mole,點擊上面的減號。然後回到主界面上,看到還是剛才操作的mole還是現實在左側面板列表中。不過項目名稱上面少了一個小圖標,表示已經從這個project中刪除了,此時再右鍵該mole,會出現【delete】選項,點擊就可以完全從硬碟中刪除該項目了。
在完全完全刪除這個mole之前,如果還想要把它添加到當前project中,直接【setting.gradle】中添加該項目的名稱即可。

『玖』 android開發應用版本升級怎麼實現

應用場景: 1、在界面中顯示應用程序的版本號; 2、用戶啟動該應用,後台判斷該應用是否是最新版本。 上述情景都需要在程序中自動獲取到應用的版本號。 思路簡介: 在Android中,應用程序的版本號是在AndroidManifest.xml文件中進行配置的,而PackageInfo類則封裝了從該配置文件中獲取的所有信息,描述了包內容的整體信息,因此,可以使用PackageInfo對象的versionName屬性獲取應用的版本號。 要怎麼獲取PackageInfo對象呢?可以通過PackageManager對象來獲取。PackageManager是一個檢索當前已安裝在設備上的相關應用程序包的各種信息的類。PackageManager對象中的getPackageInfo方法可以獲取PackageInfo對象,該方法需要傳遞兩個參數:應用包名和條件。通常情況下,應用程序的包名可以通過Activity或Context(Activity繼承自Context)的getPackageName()方法獲取,而添加可以有很多設置,通常設置為0。 最後是PackageManager對象的獲取,Context對象提供了getPackageManager()方法來獲取該對象。 綜上,模板代碼如下:(注意,此處封裝的方法位於某個Activity中,因此直接使用this來代替Context對象) /** * 獲取版本號 * @return 當前應用的版本號 */ public String getVersion() { try { PackageManager manager = this.getPackageManager(); PackageInfo info = manager.getPackageInfo(this.getPackageName(), 0); String version = info.versionName; return this.getString(R.string.version_name) + version; } catch (Exception e) { e.printStackTrace(); return this.getString(R.string.can_not_find_version_name); } }

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:521
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:868
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91