# SensorAnnotations
Annotate methods to use as listeners for sensor events.
[![Build Status](https://img.shields.io/travis/dvoiss/SensorAnnotations.svg?style=flat-square)](https://travis-ci.org/dvoiss/SensorAnnotations)
[![Download](https://api.bintray.com/packages/dvoiss/maven/sensorannotations/images/download.svg)](https://bintray.com/dvoiss/maven/sensorannotations/_latestVersion)
[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-Sensor%20Annotations-brightgreen.svg?style=flat)](http://android-arsenal.com/details/1/4593)
[![Awesome Android #22](https://img.shields.io/badge/Awesome%20Android-%2322-green.svg?style=true)](https://android.libhunt.com/newsletter/22)
```java
public class MyActivity extends Activity {
/**
* Perform actions as accelerometer data changes...
*/
@OnSensorChanged(Sensor.TYPE_ACCELEROMETER)
void accelerometerSensorChanged(@NonNull SensorEvent event) {
doSomething(event.values);
}
/**
* If the sensor isn't available, update UI accordingly...
*/
@OnSensorNotAvailable(Sensor.TYPE_ACCELEROMETER)
void testTemperatureSensorNotAvailable() {
hideAccelerometerUi();
}
@Override protected void onResume() {
super.onResume();
SensorAnnotations.bind(this);
}
@Override protected void onPause() {
super.onPause();
SensorAnnotations.unbind(this); // Unbind to save the user's battery life.
}
}
```
There are four possible annotations: `@OnSensorChanged`, `@OnAccuracyChanged`, `@OnSensorNotAvailable`, and `@OnTrigger`. The annotated methods must have the method signatures specified in the [Sensors Overview](https://developer.android.com/guide/topics/sensors/sensors_overview.html) Android docs.
```java
@OnSensorChanged(Sensor.TYPE_HEART_RATE)
void method(@NonNull SensorEvent event) {}
// or the following syntax can be used which accepts a delay value:
@OnSensorChanged(value = Sensor.TYPE_LIGHT, delay = SensorManager.SENSOR_DELAY_NORMAL)
void method(@NonNull SensorEvent event) {}
@OnAccuracyChanged(Sensor.TYPE_MAGNETIC_FIELD)
void method(@NonNull Sensor sensor, int accuracy) {}
@OnSensorNotAvailable(Sensor.TYPE_AMBIENT_TEMPERATURE)
void method() {}
@OnTrigger
void method(@NonNull TriggerEvent event) {}
```
For information about sensor delays and accuracy events see the ["Monitoring Sensor Events"](https://developer.android.com/guide/topics/sensors/sensors_overview.html#sensors-monitor) portion of the Android docs.
Calling `SensorAnnotations.bind` should be done when you want to start receiving sensor events. Because this consumes battery life you need to call `unbind` when you are finished. The `bind` method needs to take a `Context` object. There are two variations:
```java
SensorAnnotations.bind(context);
// Use this alternative to bind to a different target. See the example application.
SensorAnnotations.bind(this, context);
```
The `@OnTrigger` annotation is a specific annotation for sensors of `TYPE_SIGNIFICANT_MOTION` (introduced in 4.3). This type has a different method and parameter than the others. For more info see the Android docs on [Using the Significant Motion Sensor](https://developer.android.com/guide/topics/sensors/sensors_motion.html#sensors-motion-significant).
## View the Demo app for usage
![SensorAnnotations Sample App](https://raw.github.com/dvoiss/SensorAnnotations/master/app/screen.png)
## How does it work?
A binding class is created for each class that has annotations. In the example app, the classes `MainActivity` and `AccelerometerManager` will have two classes generated at compile time: `MainActivity$$SensorBinder` and `AccelerometerManager$$SensorBinder`. Because these classes are generated at compile time no reflection is needed.
These classes register the listener with the sensor system service. If the sensor isn't available on the device and a method has been annotated with `@OnSensorNotAvailable` it will be invoked. If an accuracy event occurs and a method has been annotated with `@OnAccuracyChanged` it will be invoked. The `TYPE_SIGNIFICANT_MOTION` sensor doesn't have an accuracy callback.
## Use in your project
```groovy
buildscript {
dependencies {
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
}
}
apply plugin: 'com.neenbedankt.android-apt'
dependencies {
compile 'com.dvoiss:sensorannotations:0.1.0'
apt 'com.dvoiss:sensorannotations-compiler:0.1.0'
}
```
Using Android Gradle Plugin version 2.2.0+:
```groovy
dependencies {
compile 'com.dvoiss:sensorannotations:0.1.0'
annotationProcessor 'com.dvoiss:sensorannotations-compiler:0.1.0'
}
```
没有合适的资源?快使用搜索试试~ 我知道了~
Android - Annotate 方法用作传感器的侦听器_Java_代码_相关文件_下载
共61个文件
java:24个
xml:11个
gradle:7个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 187 浏览量
2022-07-13
16:55:40
上传
评论
收藏 167KB ZIP 举报
温馨提示
注释方法以用作传感器事件的侦听器。 有四种可能的注释:@OnSensorChanged、@OnAccuracyChanged、@OnSensorNotAvailable和@OnTrigger。带注释的方法必须具有Sensors Overview Android 文档中指定的方法签名。 有关传感器延迟和准确度事件的信息,请参阅 Android 文档的“监控传感器事件”部分。 SensorAnnotations.bind当您想开始接收传感器事件时,应该进行调用。因为这会消耗电池寿命,所以您需要在unbind完成后调用。该bind方法需要接受一个Context对象。有两种变体: 更多详情、使用方法,请下载后细读README.md文件
资源详情
资源评论
资源推荐
收起资源包目录
SensorAnnotations-master.zip (61个子文件)
SensorAnnotations
.travis.yml 431B
gradlew.bat 2KB
gradlew 5KB
config
quality
checkstyle
checkstyle-config.xml 6KB
pmd
pmd-ruleset.xml 2KB
findbugs
android-exclude-filter.xml 350B
quality.gradle 2KB
sensorannotations-annotations
src
main
java
com
dvoiss
sensorannotations
OnSensorChanged.java 568B
internal
ListenerMethod.java 369B
OnAccuracyChanged.java 572B
OnTrigger.java 421B
OnSensorNotAvailable.java 411B
build.gradle 572B
gradle.properties 730B
sensorannotations-lib
proguard-rules.txt 234B
src
test
java
com
dvoiss
sensorannotations
BindOnSensorChangedTest.java 6KB
BindOnTriggerTest.java 5KB
BindAllAnnotationsTest.java 5KB
TestUtils.java 1012B
BindOnAccuracyChangedTest.java 6KB
SensorAnnotationsTest.java 2KB
BindOnSensorNotAvailableTest.java 5KB
main
java
com
dvoiss
sensorannotations
internal
TriggerEventListenerWrapper.java 1KB
EventListenerWrapper.java 1KB
SensorBinder.java 130B
SensorEventListenerWrapper.java 972B
SensorAnnotations.java 7KB
AndroidManifest.xml 81B
build.gradle 1KB
LICENSE 11KB
app
screen.png 31KB
src
main
res
mipmap-xxxhdpi
ic_launcher.png 10KB
mipmap-hdpi
ic_launcher.png 3KB
values
colors.xml 208B
strings.xml 791B
styles.xml 383B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 8KB
mipmap-mdpi
ic_launcher.png 2KB
mipmap-xhdpi
ic_launcher.png 5KB
layout
activity_main.xml 3KB
values-w820dp
dimens.xml 358B
java
com
example
sensorannotations
AccelerometerManager.java 2KB
MainActivity.java 6KB
AndroidManifest.xml 711B
.gitignore 7B
build.gradle 986B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 233B
.gitignore 465B
README.md 5KB
sensorannotations-compiler
src
main
resources
META-INF
services
javax.annotation.processing.Processor 56B
java
com
dvoiss
sensorannotations
exception
ProcessingException.java 560B
SensorAnnotationsProcessor.java 8KB
AnnotatedMethodsPerClass.java 2KB
AnnotatedMethod.java 3KB
SensorAnnotationsFileBuilder.java 23KB
.gitignore 7B
build.gradle 671B
settings.gradle 106B
build.gradle 1KB
共 61 条
- 1
快撑死的鱼
- 粉丝: 1w+
- 资源: 9156
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0