Remove impl from InputClassifier HAL

Make the reference implementation for InputClassifier HAL do nothing.
This is to allow cuttlefish to install this implementation.

It is safe for any device to install this implementation, and is
equivalent to not having the HAL running at all.

Test: boot up cuttlefish, and interact with the virtual device to ensure
that input works okay. Then 'ps -A | grep -i input' and ensure that the
HAL is running on the device.
Bug: 122600147

Change-Id: I841811bc0da3d78db8d7c1589cf1c59819d901a1
This commit is contained in:
Siarhei Vishniakou 2019-02-07 15:42:06 -08:00
parent 312f58e1a0
commit 443e98b12d
3 changed files with 11 additions and 28 deletions

View file

@ -1,6 +1,6 @@
cc_binary {
name: "android.hardware.input.classifier@1.0-service-example",
init_rc: ["android.hardware.input.classifier@1.0-service-example.rc"],
name: "android.hardware.input.classifier@1.0-service.default",
init_rc: ["android.hardware.input.classifier@1.0-service.default.rc"],
relative_install_path: "hw",
vendor: true,
vintf_fragments: ["manifest_input.classifier.xml"],

View file

@ -31,41 +31,24 @@ namespace V1_0 {
namespace implementation {
// Methods from ::android::hardware::input::classifier::V1_0::IInputClassifier follow.
Return<Classification> InputClassifier::classify(const MotionEvent& event) {
Return<Classification> InputClassifier::classify(const MotionEvent& /*event*/) {
/**
* In this example implementation, we will see how many "pixels" inside the video frame
* exceed the value of 250. If more than 6 such pixels are present, then treat the event
* as a "DEEP_PRESS".
* The touchscreen data is highly device-dependent.
* As a result, the implementation of this method will likely be hardware-specific.
* Here we just report gesture as not having any classification, which means that the
* default action will be taken in the framework.
* This is equivalent to not having the InputClassifier HAL at all.
*/
if (event.frames.size() == 0) {
return Classification::NONE;
}
ALOGI("Frame(O) timestamp = %" PRIu64 ", received %zu frame(s)", event.frames[0].timestamp,
event.frames.size());
for (const VideoFrame& frame : event.frames) {
size_t count = 0;
for (size_t i = 0; i < frame.data.size(); i++) {
if (frame.data[i] > 250) {
count++;
}
}
if (count > 6) {
return Classification::DEEP_PRESS;
}
}
return Classification::NONE;
}
Return<void> InputClassifier::reset() {
// We don't have any internal state in this example implementation,
// so no work needed here.
// We don't have any internal state, so no work needed here.
return Void();
}
Return<void> InputClassifier::resetDevice(int32_t /*deviceId*/) {
// We don't have any internal per-device state in this example implementation,
// so no work needed here.
// We don't have any internal per-device state, so no work needed here.
return Void();
}

View file

@ -1,4 +1,4 @@
service vendor.input.classifier-1-0 /vendor/bin/hw/android.hardware.input.classifier@1.0-service-example
service vendor.input.classifier-1-0 /vendor/bin/hw/android.hardware.input.classifier@1.0-service.default
# Must be specified if "disabled" is set. This HAL will only start if requested via getService
interface android.hardware.input.classifier@1.0::IInputClassifier default
class hal