200款優秀android項目源碼
1. Android-Ble藍牙開發Demo示例–掃描,連接,發送和接收數據,分包解包(附源碼)
萬物互聯的物聯網時代的已經來臨,ble藍牙開發在其中扮演著舉重若輕的角色。最近剛好閑一點,抽時間梳理下這塊的知識點。
涉及ble藍牙通訊的客戶端(開啟、掃描、連接、發送和接收數據、分包解包)和服務端(初始化廣播數據、開始廣播、配置Services、Server回調操作)整個環節以及一些常見的問題即踩過的一些坑。
比如
1、在Android不同版本或不同手機的適配問題,掃描不到藍牙設備
2、如何避免ble藍牙連接出現133錯誤?
3、單次寫的數據大小有20位元組限制,如何發送長數據
藍牙有傳統(經典)藍牙和低功耗藍牙BLE(Bluetooth Low Energy)之分,兩者的開發的API不一樣,本文主講Ble藍牙開發,傳統藍牙不展開,有需要的可以自行了解。
相對傳統藍牙,BLE低功耗藍牙,主要特點是快速搜索,快速連接,超低功耗保持連接和數據傳輸。
客戶端
服務端
Android4.3(API Level 18)開始引入BLE的核心功能並提供了相應的 API。應用程序通過這些 API 掃描藍牙設備、查詢 services、讀寫設備的 characteristics(屬性特徵)等操作。
BLE藍牙協議是GATT協議, BLE相關類不多, 全都位於android.bluetooth包和android.bluetooth.le包的幾個類:
android.bluetooth.
.BluetoothGattService 包含多個Characteristic(屬性特徵值), 含有唯一的UUID作為標識
.BluetoothGattCharacteristic 包含單個值和多個Descriptor, 含有唯一的UUID作為標識
.BluetoothGattDescriptor 對Characteristic進行描述, 含有唯一的UUID作為標識
.BluetoothGatt 客戶端相關
.BluetoothGattCallback 客戶端連接回調
.BluetoothGattServer 服務端相關
.BluetoothGattServerCallback 服務端連接回調
android.bluetooth.le.
.AdvertiseCallback 服務端的廣播回調
.AdvertiseData 服務端的廣播數據
.AdvertiseSettings 服務端的廣播設置
.BluetoothLeAdvertiser 服務端的廣播
.BluetoothLeScanner 客戶端掃描相關(Android5.0新增)
.ScanCallback 客戶端掃描回調
.ScanFilter 客戶端掃描過濾
.ScanRecord 客戶端掃描結果的廣播數據
.ScanResult 客戶端掃描結果
.ScanSettings 客戶端掃描設置
BLE設備分為兩種設備: 客戶端(也叫主機/中心設備/Central), 服務端(也叫從機/外圍設備/peripheral)
客戶端的核心類是 BluetoothGatt
服務端的核心類是 BluetoothGattServer 和 BluetoothLeAdvertiser
BLE數據的核心類是 BluetoothGattCharacteristic 和 BluetoothGattDescriptor
下面詳細講解下客戶端和服務端的開發步驟流程
安卓手機涉及藍牙許可權問題,藍牙開發需要在AndroidManifest.xml文件中添加許可權聲明:
在搜索設備之前需要詢問打開手機藍牙:
注意: BLE設備地址是動態變化(每隔一段時間都會變化),而經典藍牙設備是出廠就固定不變了!
通過掃描BLE設備,根據設備名稱區分出目標設備targetDevice,下一步實現與目標設備的連接,在連接設備之前要停止搜索藍牙;停止搜索一般需要一定的時間來完成,最好調用停止搜索函數之後加以100ms的延時,保證系統能夠完全停止搜索藍牙設備。停止搜索之後啟動連接過程;
BLE藍牙的連接方法相對簡單只需調用connectGatt方法;
參數說明
與設備建立連接之後與設備通信,整個通信過程都是在BluetoothGattCallback的非同步回調函數中完成;
BluetoothGattCallback中主要回調函數如下:
上述幾個回調函數是BLE開發中不可缺少的;
當調用targetdDevice.connectGatt(context, false, gattCallback)後系統會主動發起與BLE藍牙設備的連接,若成功連接到設備將回調onConnectionStateChange方法,其處理過程如下:
判斷newState == BluetoothGatt.STATE_CONNECTED表明此時已經成功連接到設備;
mBluetoothGatt.discoverServices();
掃描BLE設備服務是安卓系統中關於BLE藍牙開發的重要一步,一般在設備連接成功後調用,掃描到設備服務後回調onServicesDiscovered()函數,函數原型如下:
BLE藍牙開發主要有負責通信的BluetoothGattService完成的。當且稱為通信服務。通信服務通過硬體工程師提供的UUID獲取。獲取方式如下:
具體操作方式如下:
開啟監聽,即建立與設備的通信的首發數據通道,BLE開發中只有當客戶端成功開啟監聽後才能與服務端收發數據。開啟監聽的方式如下:
BLE單次寫的數據量大小是有限制的, 通常是20位元組 ,可以嘗試通過requestMTU增大,但不保證能成功。分包寫是一種解決方案,需要定義分包協議,假設每個包大小20位元組,分兩種包,數據包和非數據包。對於數據包,頭兩個位元組表示包的序號,剩下的都填充數據。對於非數據包,主要是發送一些控制信息。
監聽成功後通過向 writeCharacteristic寫入數據實現與服務端的通信。寫入方式如下:
其中:value一般為Hex格式指令,其內容由設備通信的藍牙通信協議規定;
若寫入指令成功則回調BluetoothGattCallback中的onCharacteristicWrite()方法,說明將數據已經發送給下位機;
若發送的數據符合通信協議,則服務端會向客戶端回復相應的數據。發送的數據通過回調onCharacteristicChanged()方法獲取,其處理方式如下:
通過向服務端發送指令獲取服務端的回復數據,即可完成與設備的通信過程;
當與設備完成通信之後之後一定要斷開與設備的連接。調用以下方法斷開與設備的連接:
源碼上傳在CSDN上了,有需要的可以借鑒。
=====> Android藍牙Ble通訊Demo示例源碼–掃描,連接,發送和接收數據,分包解包
BLE單次寫的數據量大小是有限制的,通常是20位元組,可以嘗試通過requestMTU增大,但不保證能成功。分包寫是一種解決方案,需要定義分包協議,假設每個包大小20位元組,分兩種包,數據包和非數據包。對於數據包,頭兩個位元組表示包的序號,剩下的都填充數據。對於非數據包,主要是發送一些控制信息。
總體流程如下:
1、定義通訊協議,如下(這里只是個舉例,可以根據項目需求擴展)
2、封裝通用發送數據介面(拆包)
該介面根據會發送數據內容按最大位元組數拆分(一般20位元組)放入隊列,拆分完後,依次從隊列里取出發送
3、封裝通用接收數據介面(組包)
該介面根據從接收的數據按協議里的定義解析數據長度判讀是否完整包,不是的話把每條消息累加起來
4、解析完整的數據包,進行業務邏輯處理
5、協議還可以引入加密解密,需要注意的選演算法參數的時候,加密後的長度最好跟原數據長度一致,這樣不會影響拆包組包
一般都是Android版本適配以及不同ROM機型(小米/紅米、華為/榮耀等)(EMUI、MIUI、ColorOS等)的許可權問題
藍牙開發中有很多問題,要靜下心分析問題,肯定可以解決的,一起加油;
2. android項目源碼下載
對於讀項目源代碼來說,可能對大多數人是件困難的事。首先,第一個障礙:看到項目,就已經放棄! 如果有十個人,可能有5個人以上會是上面這種情況,分析其想法:這么多的代碼,我要怎麼讀啊!我要讀好久啊!算了,還是看小Demo吧,所以這樣,他們也就只是把這個項目導入到eclipse中,點了幾下滑鼠,然後就沒有下文了。 解決辦法:其實他們終止的原因很簡單,就是嫌麻煩,那好吧,告訴你,這點麻煩都能對你造成影響,其實你的開發之路也可以終止了。任何東西,你要學到它,你就必須花時間、花精力、還要有面對困難的准備。想一步登天,有可能,除非你是天才,但畢竟天才太少了!對於開發,不是學習1+1,所以,先擺正心態吧,那要具備怎樣的心態呢?那就是:有面對困難的准備,也有解決苦難的信心。 心態問題解決了,那就是讀代碼的技巧了,很多人拿到一個項目不知道怎麼入手,乾脆就胡亂的一通看,看到一定時候發現,實在進行不下去了,又開始重新梳理自己的思路。這樣是很浪費時間的,其實對於讀一個項目,最好按照以下步驟進行(
個人意見,僅供參考
): 1、使用這個應用或者游戲,直到熟悉它的使用流程和功能 2、根據自己的體驗分析代碼實現(整體) 3、如果有條件和原作者請教項目思路 4、從最先啟動的Activity開始,弄懂每個Activity功能如何實現以及它的布局實現 5、遇到不懂的代碼,首先找搜索引擎(一般都能解決)。還不行就可以請教他人了 6、對新學到的知識點,一定要總結下來,並且定期的去回顧
7、最重要的一點:
我認為要自己動手寫,那怕是重新寫一遍這個項目,或者自己設計一個類似的,再或者只寫這個項目中的一部分。 為什麼要自己動手呢?大家都知道coder這個東西,那怕你理論學得再好,不動手,那也是毫無意義的!所以,動手寫一下,你會遇到問題,你就會解決問題,這樣,你才能學到更多。這就是經驗·······
以上回答你滿意么?
3. 急求一個android studio小程序源代碼,最好是紀念日app那樣的,只有最簡單功能就行
主界面
這次我的測評希望可以盡可能地避免出現對於設計美感的主觀討論,為了達到這個目標,我特意用 Keynote 製作了三個應用主界面的「原型圖」。
通過我做的「原型圖」可以看出,三個應用都採用了頂部導航的設計,而其中共有的一個按鈕是「添加新項目」這個使用頻次最高的功能。其次,「最美時光」和「Daybox」都將「設置」按鈕放在了頂部,而「Days Matter」則是將這個按鈕放在了接下來我們會談到的底部導航欄中。除此之外,「最美時光」在頂部設置了一個「更多」按鈕,用來展示最美系列的其他應用,「Days Matter」在頂部設置了一個「分類查看」按鈕,可以呼出左邊側邊欄,用來分類查看不同的倒數日、紀念日。
「最美時光」與「Daybox」僅僅有一個頂部導航,而「Days Matter」則非常復古地添加了一個底部導航欄,這在最近類似的輕應用中是很少見的。具體的功能我們放到後面去分析,至少雙導航欄的設計占據了本屬於倒數日列表的空間是毋庸置疑的,而且過多的元素排布會分散用戶的注意力。
接下來讓我們把目光轉向主界面最重要的元素——紀念日展示,雖然都是列表的展示,但是仔細觀察還是能發現其中的差別的。「Days Matter」與「Daybox」都是採用「一主多次」的排列方案:即給最重要的倒數日最大的展示空間,其他的倒數日則用窄列表排列;而「最美時光」則是採用「一視同仁」的排列方案。這兩種方法各有利弊,一句話來說就是在「視線聚焦」與「更多的展示空間」之間做抉擇,至於確定哪種方案更好,我的計劃是是要調查用戶到底需要記多少個倒數日以及倒數日之間到底有沒有輕重之分,這個在後面我會設計一個實驗來證明。
最後我們要關注的是一個細節,即如何區分「倒數」與「正數」。簡單解釋一下,在應用中我們一般要記兩種日子,一種是倒數,比如「距離 X 的生日還有 XX 天」;另一種是正數,比如「距離我們第一次吃飯已經有 XX 天了」。在應用中如何區分這兩種計數方式是我關心的一個點,因為這體現了這款應用是否夠嚴謹。先讓我們看「Days Matter」,用「已經」、「還有」兩個中文詞彙就輕松區分開了兩種計數方式,從這點可以明顯地看出應用的優勢;「最美時光」的方式也很巧妙,用[+]來表示「正數」,沒有符號則代表「倒數」,雖然會有一定的學習成本,仍可以算是一個「簡約」的方案。表現最差的是「Daybox」,完全沒有在這上面下功夫,單單從界面上根本無法區分「正數」與「倒數」,可以說是一個敗筆哦。
4. 怎樣查看 Android APP源代碼
將apk文件拷貝至sdcard上。
命令順序如下:
進入Android sdk文件夾/tools目錄下
輸入adb shell
輸入su
輸入cd data
輸入cd app
這時就可以看到你安裝的所有的apk文件。輸入cp 空格 對應的apk 空格 /sdcard/
這樣就將apk文件拷貝出來了。
將apk文件後綴直接變成rar格式,可以看到熟悉的目錄結構了,
其中xml文件打開後都是二進制的,無法查看。
這時就用到了一個android4me的AXMLPrinter2工具。(請自行網路搜索)
輸入以下命令,將xml文件解析出來
java -jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
將showtimes_list.xml生成xml文件,則輸入以下命令:
java -jar AXMLPrinter2.jar showtimes_list.xml > h.xml
目前進行到這一步,只能看到xml文件的內容,其工程中的java源文件還是看不到,看目錄結構下有一個classes.dex文件,我們需要將dex文件變為jar文件。
這里用到了另一個工具dex2jar。(自行搜索下載)
在Windows下解壓之後的目錄如下圖所示:
在命令行中,進入到此目錄下:
在Windows下,輸入以下命令:
dex2jar.bat c:classes.dex
運行完之後,在C盤會多一個classes.dex.dex2jar.jar文件,此文件就是我們需要的jar文件。
利用jd-gui,將jar文件反向工程為java代碼。(請自行搜索下載)
它分為Windows、Linux、和max三個版本,這里我下載的是Windows版本的。
解壓之後,雙擊運行exe文件,選擇classes.dex.dex2jar.jar文件,相應的jar文件中的Java文件就被反向工程顯示出來了!
5. Android GitHub高分優秀中文項目
CarGuo/GSYVideoPlayer
Tencent/QMUI_Android
JessYanCoding/AndroidAutoSize
youth5201314/banner
jeasonlzy/okhttp-OkGo
justauth/JustAuth
LuckSiege/PictureSelector
gyf-dev/ImmersionBar
huanghaibin-dev/CalendarView
goldze/MVVMHabit
Meituan-Dianping/walle
jpush/aurora-imui
KunMinX/Jetpack-MVVM-Best-Practice
ximsfei/Android-skin-support
yanzhenjie/SwipeRecyclerView
TommyLemon/指嘩Android-ZBLibrary
hongyangAndroid/baseAdapter
youlookwhat/CloudReader
h2pl/Java-Tutorial
oldmanpushcart/greys-anatomy
zzhoujay/RichText
brianway/java-learning
pqpo/SmartCropper
luojilab/DDComponentForAndroid
getActivity/AndroidProject
| Doikki/DKVideoPlayer |
promeG/襪裂TinyPinyin
zhou-you/RxEasyHttp
| crazyandcoder/citypicker |
huburt-Hu/NewbieGuide
FinalTeam/RxGalleryFinal
mxdldev/android-mvp-mvvm-flytour
MagicMashRoom/SuperCalendar
jiajunhui/PlayerBase
xuexiangjys/XUI
dingjikerbo/唯好行Android-BluetoothKit
android-notes/Cockroach
KingJA/LoadSir
Hitomis/transferee
KunMinX/Linkage-RecyclerView
doocs/jvm
BaronZ88/MinimalistWeather
LaiFeng-Android/SopCastComponent
JeremyLiao/LiveEventBus
svga/SVGAPlayer-Android
mqzhangw/JIMU
jianjunxiao/NiceVieoPlayer
6. 有沒有什麼好的android 實例開發的源代碼網站
網上下載建站系統,例如:pageadmin cms、discha都是不錯的、簡單、方便、直接下載就可以使用。
7. 怎樣查看 Android APP 源代碼
需要把反編譯的apk存放到apktools同級文件夾目錄下,然後運行要查看的安裝包,具體操作如下:
1、首先把反編譯的apk存放到apktools同級文件夾目錄下,如下圖所示。
8. 需要一套android打車軟體的源碼(可現金購買
網約車平台推薦:神州專車、首汽約車、滴滴出行、美團打車、曹操專車。
1、神州專車
神州專車app打車方便,隨叫隨到,同時神州專車app支付還方便,微信、支付寶都可以付款,神州專車還可以預約用車,還有很多中高端車型,選擇多樣化。預約用車和專車首選它。
2、首汽約車
「首汽約車」是首約科技(北京)有限公司實施開發運營,首汽約車與市面現有專車不同,首汽約車車輛全部為政府許可的出租運營車輛,掛有北京計程車特有的"京旦洞B"牌照。在首都深圳等地約車的不二選擇。
3、滴滴出行
滴滴出行app是一款涵蓋計程車、專車、快車、順風車、代駕及巴士在內的一站式出行平台,不僅能夠增加司機的接單率和收入,乘客出行打車等待時間也大大減少,是現在使用模備枯量最大的一個平台,屬於出行必備APP。
4、美團打車
這是美團在南京測試運營打車業務後,正式向其他城市拓展業務的最新舉動。美團初期選定的城市包括北京、上海、成都、杭州、福州、溫州和廈門。並且在這些地區招收各種網約車司機,由於優厚的福利很多司機都報名了,打車價格較為低廉。是在美團打車開通的城市的不二選擇。
5、曹操專車
曹操專車是首個建立新能源汽車出行服務標準的專車品牌。集合了新能源專車出行、新能源汽車分時租賃(由的藍租車提供)等服務的平台。注重新能源以及擁有特色的租車服務。而且在專車方面和神州滾並不相上下,會不定期有優惠券,是綠色理念城市人的新選擇。
9. android 開發大俠 求android google pinyin IME 開源源碼
包含在Android的源代碼里,路徑:packages\inputmethods\PinyinIME
Android的源代碼下載參考: http://source.android.com/source/downloading.html
需要在Linux環境下載
10. 目前市面上android商城app源碼有哪些效果怎麼樣
android商城app源碼有很多,能看的眼花繚亂。大型商城app源碼自然很少,都可以學習下載,效果來說還不錯的。