
In 未分類 on 2015年07月07日 by TAT.iptton view: 3,178
2

In 未分類 on 2014年10月14日 by TAT.zhipingfeng view: 26,756
6
前言
Facebook 在 2015.9.15 發布了 React Native for Android,把 JavaScript 開發技術擴展到了移動 Android 平臺?;?React 的 React Native 讓前端開發者使用 JavaScript 和 React 編寫應用,利用相同的核心代碼就可以創建 基于 Web,iOS 和 Android 平臺的原生應用。在 React Native for Android 出來之后,本人花了些時間從環境搭建到做出幾個 demo,從體驗來看都挺流暢,具體將此間遇到和問題和具體的新的體會,向大家分享一下。
Event-driven programming for Android
Andoird 中事件驅動編程
https://medium.com/google-developer-experts/event-driven-programming-for-android-part-i-f5ea4a3c4eab
(This is the first article in a three-part series) (本文是系列文章中的一部分)
Although Android includes some event-driven features in its development, it is far away from being a pure event-driven architecture. Is this something good or bad? As in every issue with software development the answer is not easy: it depends.
雖然 Android 已經包含了若干事件驅動特性,但其離純正的事件驅動架構還有一定的距離。這到底是好事還是壞事呢?和多數軟件開發問題的答案一樣:看情況。
相信 volley 絕大部分做 android 的人已經知道了,關于 volley 的使用網上也是一抓一大把,都是說 volley 如何如何好用,下面分享下自己在使用 volley 過程中踩過的坑。
volley 好用的一個原因是封裝的 api 看起來也比較直接,但是其回調的 api 做的是一般般,其中有一個 JsonObjectRequest 類,網上的使用說明也一大把,基本上都是最簡單的情形:
Get 請求示例:
1 2 3 4 5 |
在開發sdk生成jar在eclipse里相對比較容易操作,只要導出class時指定哪里導出就可以, 但在用AndroidStudio開發時要導出jar就沒那么容易,需要寫gradle腳本,但gradle腳本 的入門成本還是比較高,網上也有打包jar的腳本參考,但大多是通過生成classes.jar重命名 來生成,這樣生成的jar是包含工程里所有類的,有時我們需要指定一些包和類來生成jar。 下面是參考腳本: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
task clearJar(type: Delete) { delete 'libs/sdk.jar' } task makeJar(type:org.gradle.api.tasks.bundling.Jar) { //指定生成的jar名 baseName 'sdk' //從哪里打包class文件 from('build/intermediates/classes/debug/org/cmdmac/cloud/pluginsdk/') //打包到jar后的目錄結構 into('org/cmdmac/cloud/pluginsdk/') //去掉不需要打包的目錄和文件 exclude('test/', 'BuildConfig.class', 'R.class') //去掉R$開頭的文件 exclude{ it.name.startsWith('R$');} } makeJar.dependsOn(clearJar, build) |
1 |
在build.gradle寫上后,只要在命令行執行gradle makeJar就可以在build/libs目錄下找到這個jar |
上面是個簡單的例子,只能打包某個包下面的所有文件,如果要實現只打某個包下面的某些子包或者文件可參考如下示例:
1 2 3 4 5 6 7 8 9 10 11 |
task makeSdkJar(type:org.gradle.api.tasks.bundling.Jar) { baseName 'pluginsdk' //只打包org.cmdmac下的org.cmdmac.pluginsdk.impl和org.cmdmac.gamecenter,其他子包不會被打包進去 from('build/intermediates/classes/debug/org/cmdmac/') { include 'pluginsdk/impl' include 'gamecenter' } into('org/cmdmac/') // exclude('R.class') // exclude{ it.name.startsWith('R$');} } |
假設我們要做一個效果,界面最頂部是一個 ActionBar 并且是半透明的,ActionBar 下面是一個 ListView,在初始狀態下,ListView 是 top 是在 ActionBar 的 bottom 位置的,但當 ListView 滾動的時候可以透過 ActionBar 看到下面的 ListView 的內容。如下面兩張圖所示:
關于插件,已經在各大平臺上出現過很多,eclipse 插件、chrome 插件、3dmax 插件,所有這些插件大概都為了在一個主程序中實現比較通用的功能,把業務相關或者讓可以讓用戶自定義擴展的功能不附加在主程序中,主程序可在運行時安裝和卸載。
在 android 如何實現插件也已經被廣泛傳播,實現的原理都是實現一套插件接口,把插件實現編成 apk 或者 dex,然后在運行時使用 DexClassLoader 動態加載進來,這里分享一下 DexClassLoader 加載原理和分析在實現插件時不同操作造成錯誤的原因。
現在移動端已不僅僅局限于文本、圖片這些 pc 平臺上的常見信息類型,語音的使用愈見頻繁,于是前段時間萌生了個想法:如果在移動端對語音內容做處理,提取特征出來構建關鍵詞庫是否可以對這些語音進行分類、搜索,于是花了一段時間研究 android,本文從音頻的錄制、處理來記錄總結,識別下篇放上。
一、?音頻系統的架構
安卓系統里的音頻模塊可劃分為幾層:硬件、驅動、硬件抽象層、硬件與 java 庫之間的 “中介”、Framework(供 app 調用的接口都封裝在這層)、實際用戶可視的 app。
二、?語音錄制
通常情況下,做移動開發時,如果要向后臺請求數據,都會直接使用 TCP 通信。但實際上一來 HTTP 比 TCP 簡單易用多了,二來有很多現有 CGI 如果要進行改造得花很大功夫。還是會有使用 HTTP 請求來拉取數據。
Copyright © 2011-2021 AlloyTeam. All Rights Reserved. Powered By WordPress
粵ICP備15071938號-2