- 傳感器的使用
傳感器在手機上應用很廣泛,有方向傳感器, 加速傳感器,重力傳感器, 光線傳感器,陀螺儀傳感器, 壓力傳感器,心跳傳感器等。
那我們來說說代碼吧,
//從系統服務中獲得傳感器管理器
SensorManager sm=(SensorManager)getSystemService(Context.SENSOR_SERVICE);
獲得傳感器對象(這里是光傳感器)
mSensor=mSensorManage.getDefaultSensor(Sensor.TYPE_LIGHT);
當然還有其他的傳感器
必須重寫的兩個方法:onAccuracyChanged,onSensorChanged
public final void onAccuracyChanged(Sensor sensor, int accuracy) {
//TODO 在傳感器精度發生改變時做些操作,accuracy為當前傳感器精度
}
public final void onSensorChanged(SensorEvent event) {
// 大部分傳感器會返回三個軸方向x,y,x的event值,值的意義因傳感器而異
float x = event.values[0];
float y = event.values[1];
float z = event.values[2];
//TODO 利用獲得的三個float傳感器值做些操作
}
注冊傳感器并讓本類實現SensorEventListener接口
@Override
protected void onResume() {
super.onResume();
mSensorManage.registerListener(this,mSensor,SensorManager.SENSOR_DELAY_UI)
注銷傳感器
@Override
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
- gradle
1.Gradle 是新一代的自動化構建工具,它是一個獨立的項目,跟 AS、Android 無關,官方網站:https://gradle.org/ , 類似 Ant、Maven這類構建工具都是基于 xml 來進行描述的,很臃腫,而 Gradle 采用的是一種叫做 Groovy 的語言,語法跟 Java 語法很像,但是是一種動態語言,而且在 Java 基礎上做了不少改進,用起來更加簡潔、靈活,而且 Gradle 完全兼容 Maven、Ivy,這點基本上宣布了 Maven、Ivy 可以被拋棄了,Gradle 的推出主要以 Java 應用為主,當然目前還支持 Android、C、C++。
2.Gradle 跟 Android Studio 其實沒有關系,但是 Gradle 官方還是很看重 Android 開發的,Google 在推出 AS 的時候選中了 Gradle 作為構建工具,為了支持 Gradle 能在 AS 上使用,Google 做了個 AS 的插件叫 Android Gradle Plugin ,所以我們能在 AS 上使用 Gradle 完全是因為這個插件的原因。在項目的根目錄有個 build.gradle 文件,里面有這么一句代碼:
classpath 'com.android.tools.build:gradle:2.1.2'
這個就是依賴 gradle 插件的代碼,后面的版本號代表的是 android gradle plugin 的版本,而不是 Gradle 的版本,這個是 Google 定的,跟 Gradle 官方沒關系。關于 android gradle plugin 的更多信息可以到這里查看,這里列舉了 android gradle plugin 每個版本的具體變化與具體功能:
http://tools.android.com/tech-docs/new-build-system
3.gradle的幾個簡單的命令
gradlew -v 版本號
gradlew clean 清除....../app目錄下的build文件夾
gradlew build 檢查依賴并編譯打包
老師說gradle內容很多,需要我們自己來學習下,縮一上面的那個網站就很重要啦 - android 依賴
如何使用library和libs
jar
library
library中的jar
android studio中的依賴方法
在我們開發大程序程序的時候就要引用,比如我們在lbs中應用百度地圖
我們在這里主要講一下代碼操作吧,可視化的在android studio中操作
引用library,首先我們要在build.gradle中的dependcies中寫
compile project(':library')
引用jar
compile files('文件的名字。jar');
還可以在maven庫中直接搜索
- arr是什么?
為了解決Android開發中組件引用的問題,引入aar格式。也是簡單的zip格式。定義:The ‘aar’ bundle is the binary distribution of an Android Library Project.Zip包中的內容有:
/AndroidManifest.xml (mandatory)
/classes.jar (mandatory)
/res/ (mandatory)
/R.txt (mandatory)
/assets/ (optional)
/libs/.jar (optional)
/jni//.so (optional)
/proguard.txt (optional)
/lint.jar (optional)其中,R.txt是aapt –output-text-symbols命令的輸出。 - 如何生成aar
先默認新建一個Applicaton module,接后File > New > New
Module,選擇Androd Library > Next,指定Library Name和Module Name。
新建的Library與正常的Application最大區別是module build.gradle中是apply plugin: ‘com.android.library’ 而不是 apply plugin: ‘com.android.application’.然后運行就直接生成aar啦 - 引用aar
把aar粘貼到要引入庫的Application Module/libs目錄下,如沒有libs目錄,創建就好。注意要在Application Module根目錄下,不是Project根目錄下。
在Application Module/build.gradle中添加
repositories{
jcenter()
flatDir{
dirs 'libs'
}
}
在Application Module/build.gradle中添加依賴
dependencies {
compile(name:'mylibrary-debug', ext:'aar')
}