diff options
| author | LuK1337 <priv.luk@gmail.com> | 2020-11-21 14:53:53 +0100 |
|---|---|---|
| committer | Semavi Ulusoy <doc.divxm@gmail.com> | 2022-02-02 21:38:59 +0300 |
| commit | 956d419171e9f2105881c1b5b213cdfb558581b7 (patch) | |
| tree | 99401506ed74b9573acc4f2af90584311479394b | |
| parent | ed1b1d444d732a4b80b1e3a8a5afd8cb575dac83 (diff) | |
Add local OpFeatures implementation
Change-Id: Ibb1d890a96683e005520da977f2433f8094b0644
| -rw-r--r-- | oneplus-fwk/Android.bp | 8 | ||||
| -rw-r--r-- | oneplus-fwk/src/android/util/OpFeatures.java | 41 |
2 files changed, 49 insertions, 0 deletions
diff --git a/oneplus-fwk/Android.bp b/oneplus-fwk/Android.bp new file mode 100644 index 0000000..9750d1b --- /dev/null +++ b/oneplus-fwk/Android.bp @@ -0,0 +1,8 @@ +java_library { + name: "oneplus-fwk", + installable: true, + + srcs: [ + "src/**/*.java", + ], +} diff --git a/oneplus-fwk/src/android/util/OpFeatures.java b/oneplus-fwk/src/android/util/OpFeatures.java new file mode 100644 index 0000000..fc6bfe0 --- /dev/null +++ b/oneplus-fwk/src/android/util/OpFeatures.java @@ -0,0 +1,41 @@ +package android.util; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.BitSet; + +public final class OpFeatures { + + private static String LOG_TAG = OpFeatures.class.getSimpleName(); + + private static final BitSet sFeatures = new BitSet(); + + static { + File file = new File("/odm/etc/odm_feature_list"); + + try (BufferedReader br = new BufferedReader(new FileReader(file))) { + for (String line = br.readLine(); line != null; line = br.readLine()) { + String[] values = line.split(" "); + if (values.length == 4 && values[3].equals("true")) { + String id = values[0].replaceAll("[^0-9]", ""); + if (id.length() != 0) { + sFeatures.set(Integer.parseInt(id)); + } + } + } + } catch (IOException e) { + Log.e(LOG_TAG, "Failed to read odm feature list file", e); + } + } + + public static boolean isSupport(int... features) { + for (int feature : features) { + if (feature < 0 || !sFeatures.get(feature)) { + return false; + } + } + return true; + } +} |
