1a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/* 2a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Copyright 2014, The Android Open Source Project 3a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * 4a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Licensed under the Apache License, Version 2.0 (the "License"); 5a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * you may not use this file except in compliance with the License. 6a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * You may obtain a copy of the License at 7a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * 8a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * http://www.apache.org/licenses/LICENSE-2.0 9a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * 10a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Unless required by applicable law or agreed to in writing, software 11a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * distributed under the License is distributed on an "AS IS" BASIS, 12a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * See the License for the specific language governing permissions and 14a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * limitations under the License. 15a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 16a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 17a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa#define LOG_TAG "ActivityRecognitionHardware" 18a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 19a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa#include <jni.h> 202279b2534272282a5b5152723235da397e49195cSteven Moreland#include <nativehelper/JNIHelp.h> 21a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 22a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa#include <android_runtime/AndroidRuntime.h> 23a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa#include <android_runtime/Log.h> 24a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 25af737306f943570dd3d6c8a74681622bdb7ca275Colin Cross// #include <hardware/activity_recognition.h> 26c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi// The activity recognition HAL is being deprecated. This means - 27c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi// i) Android framework code shall not depend on activity recognition 28c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi// being provided through the activity_recognition.h interface. 29c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi// ii) activity recognition HAL will not be binderized as the other HALs. 30c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi// 31a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 32a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 33a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Initializes the ActivityRecognitionHardware class from the native side. 34a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 35c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshistatic void class_init(JNIEnv* /*env*/, jclass /*clazz*/) { 36c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 37c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 38a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 39a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 40a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 41a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Initializes and connect the callbacks handlers in the HAL. 42a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 43c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshistatic void initialize(JNIEnv* /*env*/, jobject /*obj*/) { 44c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 45c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 46a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 47a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 48a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 49a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * De-initializes the ActivityRecognitionHardware from the native side. 50a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 51c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshistatic void release(JNIEnv* /*env*/, jobject /*obj*/) { 52c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 53c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 54a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 55a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 56a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 57a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Returns true if ActivityRecognition HAL is supported, false otherwise. 58a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 59c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshistatic jboolean is_supported(JNIEnv* /*env*/, jclass /*clazz*/) { 60c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 61c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 62a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa return JNI_FALSE; 63a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 64a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 65a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 66a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Gets an array representing the supported activities. 67a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 68c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshistatic jobjectArray get_supported_activities(JNIEnv* /*env*/, jobject /*obj*/) { 69c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 70c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 71c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi return NULL; 72a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 73a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 74a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 75a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Enables a given activity event to be actively monitored. 76a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 77a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaastatic int enable_activity_event( 78c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi JNIEnv* /*env*/, 79c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi jobject /*obj*/, 80c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi jint /*activity_handle*/, 81c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi jint /*event_type*/, 82c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi jlong /*report_latency_ns*/) { 83c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 84c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 85c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi return android::NO_INIT; 86a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 87a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 88a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 89a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Disables a given activity event from being actively monitored. 90a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 91a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaastatic int disable_activity_event( 92c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi JNIEnv* /*env*/, 93c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi jobject /*obj*/, 94c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi jint /*activity_handle*/, 95c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi jint /*event_type*/) { 96c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 97c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 98c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi return android::NO_INIT; 99a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 100a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 101a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 102a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Request flush for al batch buffers. 103a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 104c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshistatic int flush(JNIEnv* /*env*/, jobject /*obj*/) { 105c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi ALOGE("activity_recognition HAL is deprecated. %s is effectively a no-op", 106c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi __FUNCTION__); 107c02b3b5bc23b848e6e64f35fdbbbbc9dd79b7da5Ashutosh Joshi return android::NO_INIT; 108a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 109a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 110a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 11176f6a86de25e1bf74717e047e55fd44b089673f3Daniel Micaystatic const JNINativeMethod sMethods[] = { 112a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa // {"name", "signature", (void*) functionPointer }, 113a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeClassInit", "()V", (void*) class_init }, 114a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeInitialize", "()V", (void*) initialize }, 115a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeRelease", "()V", (void*) release }, 116a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeIsSupported", "()Z", (void*) is_supported }, 117a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeGetSupportedActivities", "()[Ljava/lang/String;", (void*) get_supported_activities }, 118a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeEnableActivityEvent", "(IIJ)I", (void*) enable_activity_event }, 119a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeDisableActivityEvent", "(II)I", (void*) disable_activity_event }, 120a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa { "nativeFlush", "()I", (void*) flush }, 121a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa}; 122a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa 123a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa/** 124a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa * Registration method invoked in JNI load. 125a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa */ 126a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaaint register_android_hardware_location_ActivityRecognitionHardware(JNIEnv* env) { 127a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa return jniRegisterNativeMethods( 128a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa env, 129a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa "android/hardware/location/ActivityRecognitionHardware", 130a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa sMethods, 131a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa NELEM(sMethods)); 132a4fa3b5aa53cf677b623fe346c585cb8a0c1ce26destradaa} 133