Merge "Remove references to non-existent directories"
diff --git a/apicheck.mk b/apicheck.mk
index df9af7c..ccf1d65 100644
--- a/apicheck.mk
+++ b/apicheck.mk
@@ -18,6 +18,7 @@
# $(car_module) - name of the car library module
# $(car_module_api_dir) - dir to store API files
# $(car_module_include_systemapi) - if systemApi file should be generated
+# $(car_module_proguard_file) - where to output the proguard file, if empty no file will be produced
# $(car_module_java_libraries) - dependent libraries
# $(car_module_java_packages) - list of package names containing public classes
# $(car_module_src_files) - list of source files
@@ -103,6 +104,42 @@
#($(car_module_include_systemapi), true)
endif
+
+
+ifneq ($(strip $(car_module_proguard_file)),)
+#
+# Generate a proguard files
+# ---------------------------------------------
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := $(car_module)-proguard
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(car_module_src_files)
+LOCAL_JAVA_LIBRARIES := $(car_module_java_libraries) $(car_module)
+LOCAL_ADDITIONAL_JAVA_DIR := \
+ $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(car_module),,COMMON)/src
+LOCAL_SDK_VERSION := $(CAR_CURRENT_SDK_VERSION)
+
+docs_proguard_intermediates_output := $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),,COMMON)/keep_list.proguard
+LOCAL_DROIDDOC_OPTIONS := -proguard $(docs_proguard_intermediates_output)
+
+include $(BUILD_DROIDDOC)
+
+update-car-api: PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT := $(docs_proguard_intermediates_output)
+update-car-api: PRIVATE_PROGUARD_OUTPUT_FILE := $(car_module_proguard_file)
+update-car-api: PRIVATE_CAR_MODULE := $(car_module)
+update-car-api: $(car_module)-proguard-docs | $(ACP)
+ @echo $(PRIVATE_CAR_MODULE) copying $(PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT) to $(PRIVATE_PROGUARD_OUTPUT_FILE)
+ $(hide) $(ACP) $(PRIVATE_PROGUARD_INTERMEDIATES_OUTPUT) $(PRIVATE_PROGUARD_OUTPUT_FILE)
+
+# cleanup vars
+docs_proguard_output :=
+# ($(strip $(car_module_proguard_file)),)
+endif
+
+
#
# Check public API
# ---------------------------------------------
@@ -151,6 +188,7 @@
update-$(car_module)-api: PRIVATE_API_DIR := $(car_module_api_dir)
update-$(car_module)-api: PRIVATE_MODULE := $(car_module)
update-$(car_module)-api: PRIVATE_REMOVED_API_FILE := $(car_module_removed_file)
+update-$(car_module)-api: PRIVATE_PROGUARD_FILE := $(car_module_proguard_file)
update-$(car_module)-api: $(car_module_api_file) | $(ACP)
@echo Copying $(PRIVATE_MODULE) current.txt
$(hide) $(ACP) $< $(PRIVATE_API_DIR)/current.txt
@@ -210,6 +248,7 @@
update-$(car_module)-system-api: PRIVATE_API_DIR := $(car_module_api_dir)
update-$(car_module)-system-api: PRIVATE_MODULE := $(car_module)
update-$(car_module)-system-api: PRIVATE_REMOVED_API_FILE := $(car_module_system_removed_file)
+update-$(car_module)-system-api: PRIVATE_PROGUARD_FILE := $(car_module_proguard_file)
update-$(car_module)-system-api: $(car_module_system_api_file) | $(ACP)
@echo Copying $(PRIVATE_MODULE) system-current.txt
$(hide) $(ACP) $< $(PRIVATE_API_DIR)/system-current.txt
@@ -219,6 +258,8 @@
# Run this update API task on the update-car-api task
update-car-api: update-$(car_module)-system-api
+
+
#($(car_module_include_systemapi), true)
endif
@@ -242,3 +283,4 @@
car_stub_stamp :=
car_system_stub_stamp :=
car_module_include_systemapi :=
+car_module_proguard_file :=
diff --git a/car-support-lib/Android.mk b/car-support-lib/Android.mk
index 3760ba4..9876b45 100644
--- a/car-support-lib/Android.mk
+++ b/car-support-lib/Android.mk
@@ -22,12 +22,9 @@
#Build prebuilt android.support.car library
include $(CLEAR_VARS)
-LOCAL_AAPT_FLAGS := --auto-add-overlay \
- --extra-packages android.support.v7.appcompat \
- --extra-packages android.support.v7.recyclerview \
- --extra-packages android.support.v7.cardview
-
+LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_MODULE := android.support.car-prebuilt
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_RESOURCE_DIR += frameworks/support/v7/appcompat/res
@@ -38,22 +35,24 @@
LOCAL_MANIFEST_FILE := AndroidManifest.xml
LOCAL_SRC_FILES := $(call all-java-files-under, src) $(call all-Iaidl-files-under, src)
-
-LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4 \
- android-support-v7-appcompat \
- android-support-v7-recyclerview \
- android-support-v7-cardview \
- android-support-annotations
-
-LOCAL_JAVA_LIBRARIES += android.car
-# Specify 1.7 for backwards compatibility.
+LOCAL_JAVA_LIBRARIES += android.car\
+ android-support-v4 \
+ android-support-v7-appcompat \
+ android-support-v7-recyclerview \
+ android-support-v7-cardview \
+ android-support-annotations
+# Specify 1.7 for backwards compatibility.
# Otherwise the lib won't be usable on pre-N devices
-LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+LOCAL_JAVA_LANGUAGE_VERSION := 1.7
+
+LOCAL_PROGUARD_ENABLED := custom optimization obfuscation
+LOCAL_PROGUARD_FLAGS := -dontwarn
+LOCAL_PROGUARD_FLAG_FILES := proguard-release.flags proguard-extra-keeps.flags
include $(BUILD_STATIC_JAVA_LIBRARY)
ifeq ($(BOARD_IS_AUTOMOTIVE), true)
-$(call dist-for-goals,dist_files,$(built_aar):android.support.car.aar)
+ $(call dist-for-goals,dist_files,$(built_aar):android.support.car.aar)
endif
# Build the resources.
@@ -102,11 +101,14 @@
# ---------------------------------------------
car_module := $(LOCAL_MODULE)
car_module_src_files := $(LOCAL_SRC_FILES)
+car_module_proguard_file := $(LOCAL_PATH)/proguard-release.flags
car_module_api_dir := $(LOCAL_PATH)/api
car_module_java_libraries := $(LOCAL_JAVA_LIBRARIES) $(LOCAL_STATIC_JAVA_LIBRARIES) framework
car_module_java_packages := android.support.car*
+car_module_include_proguard := true
include $(CAR_API_CHECK)
+
# Generate offline docs
#---------------------------------------------
include $(CLEAR_VARS)
diff --git a/car-support-lib/api/current.txt b/car-support-lib/api/current.txt
index deee527..6954760 100644
--- a/car-support-lib/api/current.txt
+++ b/car-support-lib/api/current.txt
@@ -94,14 +94,10 @@
package android.support.car.hardware {
public class CarSensorEvent {
- method public android.support.car.hardware.CarSensorEvent.AccelerometerData getAccelerometerData();
method public android.support.car.hardware.CarSensorEvent.CompassData getCompassData();
method public android.support.car.hardware.CarSensorEvent.DrivingStatusData getDrivingStatusData();
- method public android.support.car.hardware.CarSensorEvent.FuelLevelData getFuelLevelData();
- method public android.support.car.hardware.CarSensorEvent.GyroscopeData getGyroscopeData();
method public android.support.car.hardware.CarSensorEvent.NightData getNightData();
method public android.support.car.hardware.CarSensorEvent.ParkingBrakeData getParkingBrakeData();
- method public android.support.car.hardware.CarSensorEvent.RpmData getRpmData();
field public static final int DRIVE_STATUS_FULLY_RESTRICTED = 31; // 0x1f
field public static final int DRIVE_STATUS_LIMIT_MESSAGE_LEN = 16; // 0x10
field public static final int DRIVE_STATUS_NO_CONFIG = 8; // 0x8
@@ -118,13 +114,6 @@
field public final long timestamp;
}
- public static class CarSensorEvent.AccelerometerData {
- field public final long timestamp;
- field public final float x;
- field public final float y;
- field public final float z;
- }
-
public static class CarSensorEvent.CompassData {
field public final float bearing;
field public final float pitch;
@@ -143,20 +132,6 @@
field public final long timestamp;
}
- public static class CarSensorEvent.FuelLevelData {
- field public final int level;
- field public final boolean lowFuelWarning;
- field public final float range;
- field public final long timestamp;
- }
-
- public static class CarSensorEvent.GyroscopeData {
- field public final long timestamp;
- field public final float x;
- field public final float y;
- field public final float z;
- }
-
public static class CarSensorEvent.NightData {
field public final boolean isNightMode;
field public final long timestamp;
@@ -167,11 +142,6 @@
field public final long timestamp;
}
- public static class CarSensorEvent.RpmData {
- field public final float rpm;
- field public final long timestamp;
- }
-
public abstract class CarSensorManager {
ctor public CarSensorManager();
method public abstract boolean addListener(android.support.car.hardware.CarSensorManager.OnSensorChangedListener, int, int) throws android.support.car.CarNotConnectedException, java.lang.IllegalArgumentException;
diff --git a/car-support-lib/proguard-extra-keeps.flags b/car-support-lib/proguard-extra-keeps.flags
new file mode 100644
index 0000000..3d03655
--- /dev/null
+++ b/car-support-lib/proguard-extra-keeps.flags
@@ -0,0 +1,10 @@
+-keepattributes *Annotation*,InnerClasses,Exceptions
+
+-keep class android.support.car.CarServiceLoader {
+ public protected *;
+ class CarConnectionCallbackProxy;
+}
+
+-keep class android.support.car.CarServiceLoader$CarConnectionCallbackProxy {
+ *;
+}
diff --git a/car-support-lib/proguard-release.flags b/car-support-lib/proguard-release.flags
new file mode 100644
index 0000000..0014945
--- /dev/null
+++ b/car-support-lib/proguard-release.flags
@@ -0,0 +1,9934 @@
+-keep class android.accounts.Account {
+ <init>(java.lang.String, java.lang.String);
+ <init>(android.os.Parcel);
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public java.lang.String name;
+ public java.lang.String type;
+}
+
+-keep class android.app.PendingIntent {
+
+ public void cancel();
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public static android.app.PendingIntent getActivities(android.content.Context, int, android.content.Intent[], int);
+ public static android.app.PendingIntent getActivities(android.content.Context, int, android.content.Intent[], int, android.os.Bundle);
+ public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int);
+ public static android.app.PendingIntent getActivity(android.content.Context, int, android.content.Intent, int, android.os.Bundle);
+ public static android.app.PendingIntent getBroadcast(android.content.Context, int, android.content.Intent, int);
+ public java.lang.String getCreatorPackage();
+ public int getCreatorUid();
+ public android.os.UserHandle getCreatorUserHandle();
+ public android.content.IntentSender getIntentSender();
+ public static android.app.PendingIntent getService(android.content.Context, int, android.content.Intent, int);
+ public java.lang.String getTargetPackage();
+ public int hashCode();
+ public static android.app.PendingIntent readPendingIntentOrNullFromParcel(android.os.Parcel);
+ public void send();
+ public void send(int);
+ public void send(android.content.Context, int, android.content.Intent);
+ public void send(int, android.app.PendingIntent$OnFinished, android.os.Handler);
+ public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent$OnFinished, android.os.Handler);
+ public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent$OnFinished, android.os.Handler, java.lang.String);
+ public void send(android.content.Context, int, android.content.Intent, android.app.PendingIntent$OnFinished, android.os.Handler, java.lang.String, android.os.Bundle);
+ public java.lang.String toString();
+ public static void writePendingIntentOrNullToParcel(android.app.PendingIntent, android.os.Parcel);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_CANCEL_CURRENT;
+ public static int FLAG_IMMUTABLE;
+ public static int FLAG_NO_CREATE;
+ public static int FLAG_ONE_SHOT;
+ public static int FLAG_UPDATE_CURRENT;
+}
+
+-keep class android.app.PendingIntent$CanceledException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.Exception);
+
+
+
+}
+
+-keep class android.app.PendingIntent$OnFinished {
+
+ public abstract void onSendFinished(android.app.PendingIntent, android.content.Intent, int, java.lang.String, android.os.Bundle);
+
+
+}
+
+-keep class android.content.BroadcastReceiver {
+ <init>();
+
+ public void abortBroadcast();
+ public void clearAbortBroadcast();
+ public boolean getAbortBroadcast();
+ public boolean getDebugUnregister();
+ public int getResultCode();
+ public java.lang.String getResultData();
+ public android.os.Bundle getResultExtras(boolean);
+ public android.content.BroadcastReceiver$PendingResult goAsync();
+ public boolean isInitialStickyBroadcast();
+ public boolean isOrderedBroadcast();
+ public abstract void onReceive(android.content.Context, android.content.Intent);
+ public android.os.IBinder peekService(android.content.Context, android.content.Intent);
+ public void setDebugUnregister(boolean);
+ public void setOrderedHint(boolean);
+ public void setResult(int, java.lang.String, android.os.Bundle);
+ public void setResultCode(int);
+ public void setResultData(java.lang.String);
+ public void setResultExtras(android.os.Bundle);
+
+
+}
+
+-keep class android.content.BroadcastReceiver$PendingResult {
+
+ public void abortBroadcast();
+ public void clearAbortBroadcast();
+ public void finish();
+ public boolean getAbortBroadcast();
+ public int getResultCode();
+ public java.lang.String getResultData();
+ public android.os.Bundle getResultExtras(boolean);
+ public void setResult(int, java.lang.String, android.os.Bundle);
+ public void setResultCode(int);
+ public void setResultData(java.lang.String);
+ public void setResultExtras(android.os.Bundle);
+
+
+}
+
+-keep class android.content.ClipData {
+ <init>(java.lang.CharSequence, java.lang.String[], android.content.ClipData$Item);
+ <init>(android.content.ClipDescription, android.content.ClipData$Item);
+ <init>(android.content.ClipData);
+
+ public void addItem(android.content.ClipData$Item);
+ public int describeContents();
+ public android.content.ClipDescription getDescription();
+ public android.content.ClipData$Item getItemAt(int);
+ public int getItemCount();
+ public static android.content.ClipData newHtmlText(java.lang.CharSequence, java.lang.CharSequence, java.lang.String);
+ public static android.content.ClipData newIntent(java.lang.CharSequence, android.content.Intent);
+ public static android.content.ClipData newPlainText(java.lang.CharSequence, java.lang.CharSequence);
+ public static android.content.ClipData newRawUri(java.lang.CharSequence, android.net.Uri);
+ public static android.content.ClipData newUri(android.content.ContentResolver, java.lang.CharSequence, android.net.Uri);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.ClipData$Item {
+ <init>(java.lang.CharSequence);
+ <init>(java.lang.CharSequence, java.lang.String);
+ <init>(android.content.Intent);
+ <init>(android.net.Uri);
+ <init>(java.lang.CharSequence, android.content.Intent, android.net.Uri);
+ <init>(java.lang.CharSequence, java.lang.String, android.content.Intent, android.net.Uri);
+
+ public java.lang.String coerceToHtmlText(android.content.Context);
+ public java.lang.CharSequence coerceToStyledText(android.content.Context);
+ public java.lang.CharSequence coerceToText(android.content.Context);
+ public java.lang.String getHtmlText();
+ public android.content.Intent getIntent();
+ public java.lang.CharSequence getText();
+ public android.net.Uri getUri();
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.content.ClipDescription {
+ <init>(java.lang.CharSequence, java.lang.String[]);
+ <init>(android.content.ClipDescription);
+
+ public static boolean compareMimeTypes(java.lang.String, java.lang.String);
+ public int describeContents();
+ public java.lang.String[] filterMimeTypes(java.lang.String);
+ public java.lang.CharSequence getLabel();
+ public java.lang.String getMimeType(int);
+ public int getMimeTypeCount();
+ public boolean hasMimeType(java.lang.String);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static java.lang.String MIMETYPE_TEXT_HTML;
+ public static java.lang.String MIMETYPE_TEXT_INTENT;
+ public static java.lang.String MIMETYPE_TEXT_PLAIN;
+ public static java.lang.String MIMETYPE_TEXT_URILIST;
+}
+
+-keep class android.content.ComponentCallbacks {
+
+ public abstract void onConfigurationChanged(android.content.res.Configuration);
+ public abstract void onLowMemory();
+
+
+}
+
+-keep class android.content.ComponentName {
+ <init>(java.lang.String, java.lang.String);
+ <init>(android.content.Context, java.lang.String);
+ <init>(android.content.Context, java.lang.Class);
+ <init>(android.os.Parcel);
+
+ public android.content.ComponentName clone();
+ public java.lang.Object clone();
+ public int compareTo(android.content.ComponentName);
+ public int compareTo(java.lang.Object);
+ public static android.content.ComponentName createRelative(java.lang.String, java.lang.String);
+ public static android.content.ComponentName createRelative(android.content.Context, java.lang.String);
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public java.lang.String flattenToShortString();
+ public java.lang.String flattenToString();
+ public java.lang.String getClassName();
+ public java.lang.String getPackageName();
+ public java.lang.String getShortClassName();
+ public int hashCode();
+ public static android.content.ComponentName readFromParcel(android.os.Parcel);
+ public java.lang.String toShortString();
+ public java.lang.String toString();
+ public static android.content.ComponentName unflattenFromString(java.lang.String);
+ public void writeToParcel(android.os.Parcel, int);
+ public static void writeToParcel(android.content.ComponentName, android.os.Parcel);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.ContentProvider {
+ <init>();
+
+ public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList);
+ public void attachInfo(android.content.Context, android.content.pm.ProviderInfo);
+ public int bulkInsert(android.net.Uri, android.content.ContentValues[]);
+ public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle);
+ public android.net.Uri canonicalize(android.net.Uri);
+ public abstract int delete(android.net.Uri, java.lang.String, java.lang.String[]);
+ public void dump(java.io.FileDescriptor, java.io.PrintWriter, java.lang.String[]);
+ public java.lang.String getCallingPackage();
+ public android.content.Context getContext();
+ public android.content.pm.PathPermission[] getPathPermissions();
+ public java.lang.String getReadPermission();
+ public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
+ public abstract java.lang.String getType(android.net.Uri);
+ public java.lang.String getWritePermission();
+ public abstract android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+ protected boolean isTemporary();
+ public void onConfigurationChanged(android.content.res.Configuration);
+ public abstract boolean onCreate();
+ public void onLowMemory();
+ public void onTrimMemory(int);
+ public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String);
+ public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
+ public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String);
+ public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
+ protected android.os.ParcelFileDescriptor openFileHelper(android.net.Uri, java.lang.String);
+ public android.os.ParcelFileDescriptor openPipeHelper(android.net.Uri, java.lang.String, android.os.Bundle, java.lang.Object, android.content.ContentProvider$PipeDataWriter);
+ public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle);
+ public android.content.res.AssetFileDescriptor openTypedAssetFile(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal);
+ public abstract android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
+ public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
+ protected void setPathPermissions(android.content.pm.PathPermission[]);
+ protected void setReadPermission(java.lang.String);
+ protected void setWritePermission(java.lang.String);
+ public void shutdown();
+ public android.net.Uri uncanonicalize(android.net.Uri);
+ public abstract int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+
+
+}
+
+-keep class android.content.ContentProvider$PipeDataWriter {
+
+ public abstract void writeDataToPipe(android.os.ParcelFileDescriptor, android.net.Uri, java.lang.String, android.os.Bundle, java.lang.Object);
+
+
+}
+
+-keep class android.content.ContentProviderClient {
+
+ public android.content.ContentProviderResult[] applyBatch(java.util.ArrayList);
+ public int bulkInsert(android.net.Uri, android.content.ContentValues[]);
+ public android.os.Bundle call(java.lang.String, java.lang.String, android.os.Bundle);
+ public android.net.Uri canonicalize(android.net.Uri);
+ public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
+ protected void finalize();
+ public android.content.ContentProvider getLocalContentProvider();
+ public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
+ public java.lang.String getType(android.net.Uri);
+ public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+ public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String);
+ public android.content.res.AssetFileDescriptor openAssetFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
+ public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String);
+ public android.os.ParcelFileDescriptor openFile(android.net.Uri, java.lang.String, android.os.CancellationSignal);
+ public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle);
+ public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal);
+ public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
+ public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
+ public boolean release();
+ public android.net.Uri uncanonicalize(android.net.Uri);
+ public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+
+
+}
+
+-keep class android.content.ContentProviderOperation {
+
+ public android.content.ContentProviderResult apply(android.content.ContentProvider, android.content.ContentProviderResult[], int);
+ public int describeContents();
+ public android.net.Uri getUri();
+ public boolean isAssertQuery();
+ public boolean isDelete();
+ public boolean isInsert();
+ public boolean isReadOperation();
+ public boolean isUpdate();
+ public boolean isWriteOperation();
+ public boolean isYieldAllowed();
+ public static android.content.ContentProviderOperation$Builder newAssertQuery(android.net.Uri);
+ public static android.content.ContentProviderOperation$Builder newDelete(android.net.Uri);
+ public static android.content.ContentProviderOperation$Builder newInsert(android.net.Uri);
+ public static android.content.ContentProviderOperation$Builder newUpdate(android.net.Uri);
+ public java.lang.String[] resolveSelectionArgsBackReferences(android.content.ContentProviderResult[], int);
+ public android.content.ContentValues resolveValueBackReferences(android.content.ContentProviderResult[], int);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.ContentProviderOperation$Builder {
+
+ public android.content.ContentProviderOperation build();
+ public android.content.ContentProviderOperation$Builder withExpectedCount(int);
+ public android.content.ContentProviderOperation$Builder withSelection(java.lang.String, java.lang.String[]);
+ public android.content.ContentProviderOperation$Builder withSelectionBackReference(int, int);
+ public android.content.ContentProviderOperation$Builder withValue(java.lang.String, java.lang.Object);
+ public android.content.ContentProviderOperation$Builder withValueBackReference(java.lang.String, int);
+ public android.content.ContentProviderOperation$Builder withValueBackReferences(android.content.ContentValues);
+ public android.content.ContentProviderOperation$Builder withValues(android.content.ContentValues);
+ public android.content.ContentProviderOperation$Builder withYieldAllowed(boolean);
+
+
+}
+
+-keep class android.content.ContentProviderResult {
+ <init>(android.net.Uri);
+ <init>(int);
+ <init>(android.os.Parcel);
+
+ public int describeContents();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public java.lang.Integer count;
+ public android.net.Uri uri;
+}
+
+-keep class android.content.ContentResolver {
+ <init>(android.content.Context);
+
+ public android.content.ContentProviderClient acquireContentProviderClient(android.net.Uri);
+ public android.content.ContentProviderClient acquireContentProviderClient(java.lang.String);
+ public android.content.ContentProviderClient acquireUnstableContentProviderClient(android.net.Uri);
+ public android.content.ContentProviderClient acquireUnstableContentProviderClient(java.lang.String);
+ public static void addPeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle, long);
+ public static java.lang.Object addStatusChangeListener(int, android.content.SyncStatusObserver);
+ public android.content.ContentProviderResult[] applyBatch(java.lang.String, java.util.ArrayList);
+ public int bulkInsert(android.net.Uri, android.content.ContentValues[]);
+ public android.os.Bundle call(android.net.Uri, java.lang.String, java.lang.String, android.os.Bundle);
+ public void cancelSync(android.net.Uri);
+ public static void cancelSync(android.accounts.Account, java.lang.String);
+ public static void cancelSync(android.content.SyncRequest);
+ public android.net.Uri canonicalize(android.net.Uri);
+ public int delete(android.net.Uri, java.lang.String, java.lang.String[]);
+ public static android.content.SyncInfo getCurrentSync();
+ public static java.util.List getCurrentSyncs();
+ public static int getIsSyncable(android.accounts.Account, java.lang.String);
+ public static boolean getMasterSyncAutomatically();
+ public java.util.List getOutgoingPersistedUriPermissions();
+ public static java.util.List getPeriodicSyncs(android.accounts.Account, java.lang.String);
+ public java.util.List getPersistedUriPermissions();
+ public java.lang.String[] getStreamTypes(android.net.Uri, java.lang.String);
+ public static android.content.SyncAdapterType[] getSyncAdapterTypes();
+ public static boolean getSyncAutomatically(android.accounts.Account, java.lang.String);
+ public java.lang.String getType(android.net.Uri);
+ public android.net.Uri insert(android.net.Uri, android.content.ContentValues);
+ public static boolean isSyncActive(android.accounts.Account, java.lang.String);
+ public static boolean isSyncPending(android.accounts.Account, java.lang.String);
+ public void notifyChange(android.net.Uri, android.database.ContentObserver);
+ public void notifyChange(android.net.Uri, android.database.ContentObserver, boolean);
+ public android.content.res.AssetFileDescriptor openAssetFileDescriptor(android.net.Uri, java.lang.String);
+ public android.content.res.AssetFileDescriptor openAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.CancellationSignal);
+ public android.os.ParcelFileDescriptor openFileDescriptor(android.net.Uri, java.lang.String);
+ public android.os.ParcelFileDescriptor openFileDescriptor(android.net.Uri, java.lang.String, android.os.CancellationSignal);
+ public java.io.InputStream openInputStream(android.net.Uri);
+ public java.io.OutputStream openOutputStream(android.net.Uri);
+ public java.io.OutputStream openOutputStream(android.net.Uri, java.lang.String);
+ public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle);
+ public android.content.res.AssetFileDescriptor openTypedAssetFileDescriptor(android.net.Uri, java.lang.String, android.os.Bundle, android.os.CancellationSignal);
+ public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String);
+ public android.database.Cursor query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
+ public void registerContentObserver(android.net.Uri, boolean, android.database.ContentObserver);
+ public void releasePersistableUriPermission(android.net.Uri, int);
+ public static void removePeriodicSync(android.accounts.Account, java.lang.String, android.os.Bundle);
+ public static void removeStatusChangeListener(java.lang.Object);
+ public static void requestSync(android.accounts.Account, java.lang.String, android.os.Bundle);
+ public static void requestSync(android.content.SyncRequest);
+ public static void setIsSyncable(android.accounts.Account, java.lang.String, int);
+ public static void setMasterSyncAutomatically(boolean);
+ public static void setSyncAutomatically(android.accounts.Account, java.lang.String, boolean);
+ public void startSync(android.net.Uri, android.os.Bundle);
+ public void takePersistableUriPermission(android.net.Uri, int);
+ public android.net.Uri uncanonicalize(android.net.Uri);
+ public void unregisterContentObserver(android.database.ContentObserver);
+ public int update(android.net.Uri, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ public static void validateSyncExtrasBundle(android.os.Bundle);
+
+
+ public static java.lang.String ANY_CURSOR_ITEM_TYPE;
+ public static java.lang.String CURSOR_DIR_BASE_TYPE;
+ public static java.lang.String CURSOR_ITEM_BASE_TYPE;
+ public static java.lang.String EXTRA_SIZE;
+ public static java.lang.String SCHEME_ANDROID_RESOURCE;
+ public static java.lang.String SCHEME_CONTENT;
+ public static java.lang.String SCHEME_FILE;
+ public static java.lang.String SYNC_EXTRAS_ACCOUNT;
+ public static java.lang.String SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS;
+ public static java.lang.String SYNC_EXTRAS_DO_NOT_RETRY;
+ public static java.lang.String SYNC_EXTRAS_EXPEDITED;
+ public static java.lang.String SYNC_EXTRAS_FORCE;
+ public static java.lang.String SYNC_EXTRAS_IGNORE_BACKOFF;
+ public static java.lang.String SYNC_EXTRAS_IGNORE_SETTINGS;
+ public static java.lang.String SYNC_EXTRAS_INITIALIZE;
+ public static java.lang.String SYNC_EXTRAS_MANUAL;
+ public static java.lang.String SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS;
+ public static java.lang.String SYNC_EXTRAS_UPLOAD;
+ public static int SYNC_OBSERVER_TYPE_ACTIVE;
+ public static int SYNC_OBSERVER_TYPE_PENDING;
+ public static int SYNC_OBSERVER_TYPE_SETTINGS;
+}
+
+-keep class android.content.ContentValues {
+ <init>();
+ <init>(int);
+ <init>(android.content.ContentValues);
+
+ public void clear();
+ public boolean containsKey(java.lang.String);
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public java.lang.Object get(java.lang.String);
+ public java.lang.Boolean getAsBoolean(java.lang.String);
+ public java.lang.Byte getAsByte(java.lang.String);
+ public byte[] getAsByteArray(java.lang.String);
+ public java.lang.Double getAsDouble(java.lang.String);
+ public java.lang.Float getAsFloat(java.lang.String);
+ public java.lang.Integer getAsInteger(java.lang.String);
+ public java.lang.Long getAsLong(java.lang.String);
+ public java.lang.Short getAsShort(java.lang.String);
+ public java.lang.String getAsString(java.lang.String);
+ public int hashCode();
+ public java.util.Set keySet();
+ public void put(java.lang.String, java.lang.String);
+ public void put(java.lang.String, java.lang.Byte);
+ public void put(java.lang.String, java.lang.Short);
+ public void put(java.lang.String, java.lang.Integer);
+ public void put(java.lang.String, java.lang.Long);
+ public void put(java.lang.String, java.lang.Float);
+ public void put(java.lang.String, java.lang.Double);
+ public void put(java.lang.String, java.lang.Boolean);
+ public void put(java.lang.String, byte[]);
+ public void putAll(android.content.ContentValues);
+ public void putNull(java.lang.String);
+ public void remove(java.lang.String);
+ public int size();
+ public java.lang.String toString();
+ public java.util.Set valueSet();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static java.lang.String TAG;
+}
+
+-keep class android.content.Context {
+ <init>();
+
+ public abstract boolean bindService(android.content.Intent, android.content.ServiceConnection, int);
+ public abstract int checkCallingOrSelfPermission(java.lang.String);
+ public abstract int checkCallingOrSelfUriPermission(android.net.Uri, int);
+ public abstract int checkCallingPermission(java.lang.String);
+ public abstract int checkCallingUriPermission(android.net.Uri, int);
+ public abstract int checkPermission(java.lang.String, int, int);
+ public abstract int checkSelfPermission(java.lang.String);
+ public abstract int checkUriPermission(android.net.Uri, int, int, int);
+ public abstract int checkUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int);
+ public abstract void clearWallpaper();
+ public abstract android.content.Context createConfigurationContext(android.content.res.Configuration);
+ public abstract android.content.Context createDisplayContext(android.view.Display);
+ public abstract android.content.Context createPackageContext(java.lang.String, int);
+ public abstract java.lang.String[] databaseList();
+ public abstract boolean deleteDatabase(java.lang.String);
+ public abstract boolean deleteFile(java.lang.String);
+ public abstract void enforceCallingOrSelfPermission(java.lang.String, java.lang.String);
+ public abstract void enforceCallingOrSelfUriPermission(android.net.Uri, int, java.lang.String);
+ public abstract void enforceCallingPermission(java.lang.String, java.lang.String);
+ public abstract void enforceCallingUriPermission(android.net.Uri, int, java.lang.String);
+ public abstract void enforcePermission(java.lang.String, int, int, java.lang.String);
+ public abstract void enforceUriPermission(android.net.Uri, int, int, int, java.lang.String);
+ public abstract void enforceUriPermission(android.net.Uri, java.lang.String, java.lang.String, int, int, int, java.lang.String);
+ public abstract java.lang.String[] fileList();
+ public abstract android.content.Context getApplicationContext();
+ public abstract android.content.pm.ApplicationInfo getApplicationInfo();
+ public abstract android.content.res.AssetManager getAssets();
+ public abstract java.io.File getCacheDir();
+ public abstract java.lang.ClassLoader getClassLoader();
+ public abstract java.io.File getCodeCacheDir();
+ public int getColor(int);
+ public android.content.res.ColorStateList getColorStateList(int);
+ public abstract android.content.ContentResolver getContentResolver();
+ public abstract java.io.File getDatabasePath(java.lang.String);
+ public abstract java.io.File getDir(java.lang.String, int);
+ public android.graphics.drawable.Drawable getDrawable(int);
+ public abstract java.io.File getExternalCacheDir();
+ public abstract java.io.File[] getExternalCacheDirs();
+ public abstract java.io.File getExternalFilesDir(java.lang.String);
+ public abstract java.io.File[] getExternalFilesDirs(java.lang.String);
+ public abstract java.io.File[] getExternalMediaDirs();
+ public abstract java.io.File getFileStreamPath(java.lang.String);
+ public abstract java.io.File getFilesDir();
+ public abstract android.os.Looper getMainLooper();
+ public abstract java.io.File getNoBackupFilesDir();
+ public abstract java.io.File getObbDir();
+ public abstract java.io.File[] getObbDirs();
+ public abstract java.lang.String getPackageCodePath();
+ public abstract android.content.pm.PackageManager getPackageManager();
+ public abstract java.lang.String getPackageName();
+ public abstract java.lang.String getPackageResourcePath();
+ public abstract android.content.res.Resources getResources();
+ public abstract android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
+ public java.lang.String getString(int);
+ public java.lang.String getString(int, java.lang.Object[]);
+ public abstract java.lang.Object getSystemService(java.lang.String);
+ public java.lang.Object getSystemService(java.lang.Class);
+ public abstract java.lang.String getSystemServiceName(java.lang.Class);
+ public java.lang.CharSequence getText(int);
+ public abstract android.content.res.Resources$Theme getTheme();
+ public abstract android.graphics.drawable.Drawable getWallpaper();
+ public abstract int getWallpaperDesiredMinimumHeight();
+ public abstract int getWallpaperDesiredMinimumWidth();
+ public abstract void grantUriPermission(java.lang.String, android.net.Uri, int);
+ public boolean isRestricted();
+ public android.content.res.TypedArray obtainStyledAttributes(int[]);
+ public android.content.res.TypedArray obtainStyledAttributes(int, int[]);
+ public android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[]);
+ public android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[], int, int);
+ public abstract java.io.FileInputStream openFileInput(java.lang.String);
+ public abstract java.io.FileOutputStream openFileOutput(java.lang.String, int);
+ public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory);
+ public abstract android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, int, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler);
+ public abstract android.graphics.drawable.Drawable peekWallpaper();
+ public void registerComponentCallbacks(android.content.ComponentCallbacks);
+ public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter);
+ public abstract android.content.Intent registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter, java.lang.String, android.os.Handler);
+ public abstract void removeStickyBroadcast(android.content.Intent);
+ public abstract void removeStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+ public abstract void revokeUriPermission(android.net.Uri, int);
+ public abstract void sendBroadcast(android.content.Intent);
+ public abstract void sendBroadcast(android.content.Intent, java.lang.String);
+ public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+ public abstract void sendBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String);
+ public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String);
+ public abstract void sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ public abstract void sendOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ public abstract void sendStickyBroadcast(android.content.Intent);
+ public abstract void sendStickyBroadcastAsUser(android.content.Intent, android.os.UserHandle);
+ public abstract void sendStickyOrderedBroadcast(android.content.Intent, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ public abstract void sendStickyOrderedBroadcastAsUser(android.content.Intent, android.os.UserHandle, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle);
+ public abstract void setTheme(int);
+ public abstract void setWallpaper(android.graphics.Bitmap);
+ public abstract void setWallpaper(java.io.InputStream);
+ public abstract void startActivities(android.content.Intent[]);
+ public abstract void startActivities(android.content.Intent[], android.os.Bundle);
+ public abstract void startActivity(android.content.Intent);
+ public abstract void startActivity(android.content.Intent, android.os.Bundle);
+ public abstract boolean startInstrumentation(android.content.ComponentName, java.lang.String, android.os.Bundle);
+ public abstract void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int);
+ public abstract void startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle);
+ public abstract android.content.ComponentName startService(android.content.Intent);
+ public abstract boolean stopService(android.content.Intent);
+ public abstract void unbindService(android.content.ServiceConnection);
+ public void unregisterComponentCallbacks(android.content.ComponentCallbacks);
+ public abstract void unregisterReceiver(android.content.BroadcastReceiver);
+
+
+ public static java.lang.String ACCESSIBILITY_SERVICE;
+ public static java.lang.String ACCOUNT_SERVICE;
+ public static java.lang.String ACTIVITY_SERVICE;
+ public static java.lang.String ALARM_SERVICE;
+ public static java.lang.String APPWIDGET_SERVICE;
+ public static java.lang.String APP_OPS_SERVICE;
+ public static java.lang.String AUDIO_SERVICE;
+ public static java.lang.String BATTERY_SERVICE;
+ public static int BIND_ABOVE_CLIENT;
+ public static int BIND_ADJUST_WITH_ACTIVITY;
+ public static int BIND_ALLOW_OOM_MANAGEMENT;
+ public static int BIND_AUTO_CREATE;
+ public static int BIND_DEBUG_UNBIND;
+ public static int BIND_IMPORTANT;
+ public static int BIND_NOT_FOREGROUND;
+ public static int BIND_WAIVE_PRIORITY;
+ public static java.lang.String BLUETOOTH_SERVICE;
+ public static java.lang.String CAMERA_SERVICE;
+ public static java.lang.String CAPTIONING_SERVICE;
+ public static java.lang.String CARRIER_CONFIG_SERVICE;
+ public static java.lang.String CLIPBOARD_SERVICE;
+ public static java.lang.String CONNECTIVITY_SERVICE;
+ public static java.lang.String CONSUMER_IR_SERVICE;
+ public static int CONTEXT_IGNORE_SECURITY;
+ public static int CONTEXT_INCLUDE_CODE;
+ public static int CONTEXT_RESTRICTED;
+ public static java.lang.String DEVICE_POLICY_SERVICE;
+ public static java.lang.String DISPLAY_SERVICE;
+ public static java.lang.String DOWNLOAD_SERVICE;
+ public static java.lang.String DROPBOX_SERVICE;
+ public static java.lang.String FINGERPRINT_SERVICE;
+ public static java.lang.String INPUT_METHOD_SERVICE;
+ public static java.lang.String INPUT_SERVICE;
+ public static java.lang.String JOB_SCHEDULER_SERVICE;
+ public static java.lang.String KEYGUARD_SERVICE;
+ public static java.lang.String LAUNCHER_APPS_SERVICE;
+ public static java.lang.String LAYOUT_INFLATER_SERVICE;
+ public static java.lang.String LOCATION_SERVICE;
+ public static java.lang.String MEDIA_PROJECTION_SERVICE;
+ public static java.lang.String MEDIA_ROUTER_SERVICE;
+ public static java.lang.String MEDIA_SESSION_SERVICE;
+ public static java.lang.String MIDI_SERVICE;
+ public static int MODE_APPEND;
+ public static int MODE_ENABLE_WRITE_AHEAD_LOGGING;
+ public static int MODE_MULTI_PROCESS;
+ public static int MODE_PRIVATE;
+ public static int MODE_WORLD_READABLE;
+ public static int MODE_WORLD_WRITEABLE;
+ public static java.lang.String NETWORK_STATS_SERVICE;
+ public static java.lang.String NFC_SERVICE;
+ public static java.lang.String NOTIFICATION_SERVICE;
+ public static java.lang.String NSD_SERVICE;
+ public static java.lang.String POWER_SERVICE;
+ public static java.lang.String PRINT_SERVICE;
+ public static java.lang.String RESTRICTIONS_SERVICE;
+ public static java.lang.String SEARCH_SERVICE;
+ public static java.lang.String SENSOR_SERVICE;
+ public static java.lang.String STORAGE_SERVICE;
+ public static java.lang.String TELECOM_SERVICE;
+ public static java.lang.String TELEPHONY_SERVICE;
+ public static java.lang.String TELEPHONY_SUBSCRIPTION_SERVICE;
+ public static java.lang.String TEXT_SERVICES_MANAGER_SERVICE;
+ public static java.lang.String TV_INPUT_SERVICE;
+ public static java.lang.String UI_MODE_SERVICE;
+ public static java.lang.String USAGE_STATS_SERVICE;
+ public static java.lang.String USB_SERVICE;
+ public static java.lang.String USER_SERVICE;
+ public static java.lang.String VIBRATOR_SERVICE;
+ public static java.lang.String WALLPAPER_SERVICE;
+ public static java.lang.String WIFI_P2P_SERVICE;
+ public static java.lang.String WIFI_SERVICE;
+ public static java.lang.String WINDOW_SERVICE;
+}
+
+-keep class android.content.Intent {
+ <init>();
+ <init>(android.content.Intent);
+ <init>(java.lang.String);
+ <init>(java.lang.String, android.net.Uri);
+ <init>(android.content.Context, java.lang.Class);
+ <init>(java.lang.String, android.net.Uri, android.content.Context, java.lang.Class);
+
+ public android.content.Intent addCategory(java.lang.String);
+ public android.content.Intent addFlags(int);
+ public java.lang.Object clone();
+ public android.content.Intent cloneFilter();
+ public static android.content.Intent createChooser(android.content.Intent, java.lang.CharSequence);
+ public static android.content.Intent createChooser(android.content.Intent, java.lang.CharSequence, android.content.IntentSender);
+ public int describeContents();
+ public int fillIn(android.content.Intent, int);
+ public boolean filterEquals(android.content.Intent);
+ public int filterHashCode();
+ public java.lang.String getAction();
+ public boolean[] getBooleanArrayExtra(java.lang.String);
+ public boolean getBooleanExtra(java.lang.String, boolean);
+ public android.os.Bundle getBundleExtra(java.lang.String);
+ public byte[] getByteArrayExtra(java.lang.String);
+ public byte getByteExtra(java.lang.String, byte);
+ public java.util.Set getCategories();
+ public char[] getCharArrayExtra(java.lang.String);
+ public char getCharExtra(java.lang.String, char);
+ public java.lang.CharSequence[] getCharSequenceArrayExtra(java.lang.String);
+ public java.util.ArrayList getCharSequenceArrayListExtra(java.lang.String);
+ public java.lang.CharSequence getCharSequenceExtra(java.lang.String);
+ public android.content.ClipData getClipData();
+ public android.content.ComponentName getComponent();
+ public android.net.Uri getData();
+ public java.lang.String getDataString();
+ public double[] getDoubleArrayExtra(java.lang.String);
+ public double getDoubleExtra(java.lang.String, double);
+ public android.os.Bundle getExtras();
+ public int getFlags();
+ public float[] getFloatArrayExtra(java.lang.String);
+ public float getFloatExtra(java.lang.String, float);
+ public int[] getIntArrayExtra(java.lang.String);
+ public int getIntExtra(java.lang.String, int);
+ public java.util.ArrayList getIntegerArrayListExtra(java.lang.String);
+ public static android.content.Intent getIntent(java.lang.String);
+ public static android.content.Intent getIntentOld(java.lang.String);
+ public long[] getLongArrayExtra(java.lang.String);
+ public long getLongExtra(java.lang.String, long);
+ public java.lang.String getPackage();
+ public android.os.Parcelable[] getParcelableArrayExtra(java.lang.String);
+ public java.util.ArrayList getParcelableArrayListExtra(java.lang.String);
+ public android.os.Parcelable getParcelableExtra(java.lang.String);
+ public java.lang.String getScheme();
+ public android.content.Intent getSelector();
+ public java.io.Serializable getSerializableExtra(java.lang.String);
+ public short[] getShortArrayExtra(java.lang.String);
+ public short getShortExtra(java.lang.String, short);
+ public android.graphics.Rect getSourceBounds();
+ public java.lang.String[] getStringArrayExtra(java.lang.String);
+ public java.util.ArrayList getStringArrayListExtra(java.lang.String);
+ public java.lang.String getStringExtra(java.lang.String);
+ public java.lang.String getType();
+ public boolean hasCategory(java.lang.String);
+ public boolean hasExtra(java.lang.String);
+ public boolean hasFileDescriptors();
+ public static android.content.Intent makeMainActivity(android.content.ComponentName);
+ public static android.content.Intent makeMainSelectorActivity(java.lang.String, java.lang.String);
+ public static android.content.Intent makeRestartActivityTask(android.content.ComponentName);
+ public static java.lang.String normalizeMimeType(java.lang.String);
+ public static android.content.Intent parseIntent(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
+ public static android.content.Intent parseUri(java.lang.String, int);
+ public android.content.Intent putCharSequenceArrayListExtra(java.lang.String, java.util.ArrayList);
+ public android.content.Intent putExtra(java.lang.String, boolean);
+ public android.content.Intent putExtra(java.lang.String, byte);
+ public android.content.Intent putExtra(java.lang.String, char);
+ public android.content.Intent putExtra(java.lang.String, short);
+ public android.content.Intent putExtra(java.lang.String, int);
+ public android.content.Intent putExtra(java.lang.String, long);
+ public android.content.Intent putExtra(java.lang.String, float);
+ public android.content.Intent putExtra(java.lang.String, double);
+ public android.content.Intent putExtra(java.lang.String, java.lang.String);
+ public android.content.Intent putExtra(java.lang.String, java.lang.CharSequence);
+ public android.content.Intent putExtra(java.lang.String, android.os.Parcelable);
+ public android.content.Intent putExtra(java.lang.String, android.os.Parcelable[]);
+ public android.content.Intent putExtra(java.lang.String, java.io.Serializable);
+ public android.content.Intent putExtra(java.lang.String, boolean[]);
+ public android.content.Intent putExtra(java.lang.String, byte[]);
+ public android.content.Intent putExtra(java.lang.String, short[]);
+ public android.content.Intent putExtra(java.lang.String, char[]);
+ public android.content.Intent putExtra(java.lang.String, int[]);
+ public android.content.Intent putExtra(java.lang.String, long[]);
+ public android.content.Intent putExtra(java.lang.String, float[]);
+ public android.content.Intent putExtra(java.lang.String, double[]);
+ public android.content.Intent putExtra(java.lang.String, java.lang.String[]);
+ public android.content.Intent putExtra(java.lang.String, java.lang.CharSequence[]);
+ public android.content.Intent putExtra(java.lang.String, android.os.Bundle);
+ public android.content.Intent putExtras(android.content.Intent);
+ public android.content.Intent putExtras(android.os.Bundle);
+ public android.content.Intent putIntegerArrayListExtra(java.lang.String, java.util.ArrayList);
+ public android.content.Intent putParcelableArrayListExtra(java.lang.String, java.util.ArrayList);
+ public android.content.Intent putStringArrayListExtra(java.lang.String, java.util.ArrayList);
+ public void readFromParcel(android.os.Parcel);
+ public void removeCategory(java.lang.String);
+ public void removeExtra(java.lang.String);
+ public android.content.Intent replaceExtras(android.content.Intent);
+ public android.content.Intent replaceExtras(android.os.Bundle);
+ public android.content.ComponentName resolveActivity(android.content.pm.PackageManager);
+ public android.content.pm.ActivityInfo resolveActivityInfo(android.content.pm.PackageManager, int);
+ public java.lang.String resolveType(android.content.Context);
+ public java.lang.String resolveType(android.content.ContentResolver);
+ public java.lang.String resolveTypeIfNeeded(android.content.ContentResolver);
+ public android.content.Intent setAction(java.lang.String);
+ public android.content.Intent setClass(android.content.Context, java.lang.Class);
+ public android.content.Intent setClassName(android.content.Context, java.lang.String);
+ public android.content.Intent setClassName(java.lang.String, java.lang.String);
+ public void setClipData(android.content.ClipData);
+ public android.content.Intent setComponent(android.content.ComponentName);
+ public android.content.Intent setData(android.net.Uri);
+ public android.content.Intent setDataAndNormalize(android.net.Uri);
+ public android.content.Intent setDataAndType(android.net.Uri, java.lang.String);
+ public android.content.Intent setDataAndTypeAndNormalize(android.net.Uri, java.lang.String);
+ public void setExtrasClassLoader(java.lang.ClassLoader);
+ public android.content.Intent setFlags(int);
+ public android.content.Intent setPackage(java.lang.String);
+ public void setSelector(android.content.Intent);
+ public void setSourceBounds(android.graphics.Rect);
+ public android.content.Intent setType(java.lang.String);
+ public android.content.Intent setTypeAndNormalize(java.lang.String);
+ public java.lang.String toString();
+ public java.lang.String toURI();
+ public java.lang.String toUri(int);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static java.lang.String ACTION_AIRPLANE_MODE_CHANGED;
+ public static java.lang.String ACTION_ALL_APPS;
+ public static java.lang.String ACTION_ANSWER;
+ public static java.lang.String ACTION_APPLICATION_RESTRICTIONS_CHANGED;
+ public static java.lang.String ACTION_APP_ERROR;
+ public static java.lang.String ACTION_ASSIST;
+ public static java.lang.String ACTION_ATTACH_DATA;
+ public static java.lang.String ACTION_BATTERY_CHANGED;
+ public static java.lang.String ACTION_BATTERY_LOW;
+ public static java.lang.String ACTION_BATTERY_OKAY;
+ public static java.lang.String ACTION_BOOT_COMPLETED;
+ public static java.lang.String ACTION_BUG_REPORT;
+ public static java.lang.String ACTION_CALL;
+ public static java.lang.String ACTION_CALL_BUTTON;
+ public static java.lang.String ACTION_CAMERA_BUTTON;
+ public static java.lang.String ACTION_CHOOSER;
+ public static java.lang.String ACTION_CLOSE_SYSTEM_DIALOGS;
+ public static java.lang.String ACTION_CONFIGURATION_CHANGED;
+ public static java.lang.String ACTION_CREATE_DOCUMENT;
+ public static java.lang.String ACTION_CREATE_SHORTCUT;
+ public static java.lang.String ACTION_DATE_CHANGED;
+ public static java.lang.String ACTION_DEFAULT;
+ public static java.lang.String ACTION_DELETE;
+ public static java.lang.String ACTION_DEVICE_STORAGE_LOW;
+ public static java.lang.String ACTION_DEVICE_STORAGE_OK;
+ public static java.lang.String ACTION_DIAL;
+ public static java.lang.String ACTION_DOCK_EVENT;
+ public static java.lang.String ACTION_DREAMING_STARTED;
+ public static java.lang.String ACTION_DREAMING_STOPPED;
+ public static java.lang.String ACTION_EDIT;
+ public static java.lang.String ACTION_EXTERNAL_APPLICATIONS_AVAILABLE;
+ public static java.lang.String ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE;
+ public static java.lang.String ACTION_FACTORY_TEST;
+ public static java.lang.String ACTION_GET_CONTENT;
+ public static java.lang.String ACTION_GET_RESTRICTION_ENTRIES;
+ public static java.lang.String ACTION_GTALK_SERVICE_CONNECTED;
+ public static java.lang.String ACTION_GTALK_SERVICE_DISCONNECTED;
+ public static java.lang.String ACTION_HEADSET_PLUG;
+ public static java.lang.String ACTION_INPUT_METHOD_CHANGED;
+ public static java.lang.String ACTION_INSERT;
+ public static java.lang.String ACTION_INSERT_OR_EDIT;
+ public static java.lang.String ACTION_INSTALL_PACKAGE;
+ public static java.lang.String ACTION_LOCALE_CHANGED;
+ public static java.lang.String ACTION_MAIN;
+ public static java.lang.String ACTION_MANAGED_PROFILE_ADDED;
+ public static java.lang.String ACTION_MANAGED_PROFILE_REMOVED;
+ public static java.lang.String ACTION_MANAGE_NETWORK_USAGE;
+ public static java.lang.String ACTION_MANAGE_PACKAGE_STORAGE;
+ public static java.lang.String ACTION_MEDIA_BAD_REMOVAL;
+ public static java.lang.String ACTION_MEDIA_BUTTON;
+ public static java.lang.String ACTION_MEDIA_CHECKING;
+ public static java.lang.String ACTION_MEDIA_EJECT;
+ public static java.lang.String ACTION_MEDIA_MOUNTED;
+ public static java.lang.String ACTION_MEDIA_NOFS;
+ public static java.lang.String ACTION_MEDIA_REMOVED;
+ public static java.lang.String ACTION_MEDIA_SCANNER_FINISHED;
+ public static java.lang.String ACTION_MEDIA_SCANNER_SCAN_FILE;
+ public static java.lang.String ACTION_MEDIA_SCANNER_STARTED;
+ public static java.lang.String ACTION_MEDIA_SHARED;
+ public static java.lang.String ACTION_MEDIA_UNMOUNTABLE;
+ public static java.lang.String ACTION_MEDIA_UNMOUNTED;
+ public static java.lang.String ACTION_MY_PACKAGE_REPLACED;
+ public static java.lang.String ACTION_NEW_OUTGOING_CALL;
+ public static java.lang.String ACTION_OPEN_DOCUMENT;
+ public static java.lang.String ACTION_OPEN_DOCUMENT_TREE;
+ public static java.lang.String ACTION_PACKAGE_ADDED;
+ public static java.lang.String ACTION_PACKAGE_CHANGED;
+ public static java.lang.String ACTION_PACKAGE_DATA_CLEARED;
+ public static java.lang.String ACTION_PACKAGE_FIRST_LAUNCH;
+ public static java.lang.String ACTION_PACKAGE_FULLY_REMOVED;
+ public static java.lang.String ACTION_PACKAGE_INSTALL;
+ public static java.lang.String ACTION_PACKAGE_NEEDS_VERIFICATION;
+ public static java.lang.String ACTION_PACKAGE_REMOVED;
+ public static java.lang.String ACTION_PACKAGE_REPLACED;
+ public static java.lang.String ACTION_PACKAGE_RESTARTED;
+ public static java.lang.String ACTION_PACKAGE_VERIFIED;
+ public static java.lang.String ACTION_PASTE;
+ public static java.lang.String ACTION_PICK;
+ public static java.lang.String ACTION_PICK_ACTIVITY;
+ public static java.lang.String ACTION_POWER_CONNECTED;
+ public static java.lang.String ACTION_POWER_DISCONNECTED;
+ public static java.lang.String ACTION_POWER_USAGE_SUMMARY;
+ public static java.lang.String ACTION_PROCESS_TEXT;
+ public static java.lang.String ACTION_PROVIDER_CHANGED;
+ public static java.lang.String ACTION_QUICK_CLOCK;
+ public static java.lang.String ACTION_REBOOT;
+ public static java.lang.String ACTION_RUN;
+ public static java.lang.String ACTION_SCREEN_OFF;
+ public static java.lang.String ACTION_SCREEN_ON;
+ public static java.lang.String ACTION_SEARCH;
+ public static java.lang.String ACTION_SEARCH_LONG_PRESS;
+ public static java.lang.String ACTION_SEND;
+ public static java.lang.String ACTION_SENDTO;
+ public static java.lang.String ACTION_SEND_MULTIPLE;
+ public static java.lang.String ACTION_SET_WALLPAPER;
+ public static java.lang.String ACTION_SHUTDOWN;
+ public static java.lang.String ACTION_SYNC;
+ public static java.lang.String ACTION_SYSTEM_TUTORIAL;
+ public static java.lang.String ACTION_TIMEZONE_CHANGED;
+ public static java.lang.String ACTION_TIME_CHANGED;
+ public static java.lang.String ACTION_TIME_TICK;
+ public static java.lang.String ACTION_UID_REMOVED;
+ public static java.lang.String ACTION_UMS_CONNECTED;
+ public static java.lang.String ACTION_UMS_DISCONNECTED;
+ public static java.lang.String ACTION_UNINSTALL_PACKAGE;
+ public static java.lang.String ACTION_USER_BACKGROUND;
+ public static java.lang.String ACTION_USER_FOREGROUND;
+ public static java.lang.String ACTION_USER_INITIALIZE;
+ public static java.lang.String ACTION_USER_PRESENT;
+ public static java.lang.String ACTION_VIEW;
+ public static java.lang.String ACTION_VOICE_COMMAND;
+ public static java.lang.String ACTION_WALLPAPER_CHANGED;
+ public static java.lang.String ACTION_WEB_SEARCH;
+ public static java.lang.String CATEGORY_ALTERNATIVE;
+ public static java.lang.String CATEGORY_APP_BROWSER;
+ public static java.lang.String CATEGORY_APP_CALCULATOR;
+ public static java.lang.String CATEGORY_APP_CALENDAR;
+ public static java.lang.String CATEGORY_APP_CONTACTS;
+ public static java.lang.String CATEGORY_APP_EMAIL;
+ public static java.lang.String CATEGORY_APP_GALLERY;
+ public static java.lang.String CATEGORY_APP_MAPS;
+ public static java.lang.String CATEGORY_APP_MARKET;
+ public static java.lang.String CATEGORY_APP_MESSAGING;
+ public static java.lang.String CATEGORY_APP_MUSIC;
+ public static java.lang.String CATEGORY_BROWSABLE;
+ public static java.lang.String CATEGORY_CAR_DOCK;
+ public static java.lang.String CATEGORY_CAR_MODE;
+ public static java.lang.String CATEGORY_DEFAULT;
+ public static java.lang.String CATEGORY_DESK_DOCK;
+ public static java.lang.String CATEGORY_DEVELOPMENT_PREFERENCE;
+ public static java.lang.String CATEGORY_EMBED;
+ public static java.lang.String CATEGORY_FRAMEWORK_INSTRUMENTATION_TEST;
+ public static java.lang.String CATEGORY_HE_DESK_DOCK;
+ public static java.lang.String CATEGORY_HOME;
+ public static java.lang.String CATEGORY_INFO;
+ public static java.lang.String CATEGORY_LAUNCHER;
+ public static java.lang.String CATEGORY_LEANBACK_LAUNCHER;
+ public static java.lang.String CATEGORY_LE_DESK_DOCK;
+ public static java.lang.String CATEGORY_MONKEY;
+ public static java.lang.String CATEGORY_OPENABLE;
+ public static java.lang.String CATEGORY_PREFERENCE;
+ public static java.lang.String CATEGORY_SAMPLE_CODE;
+ public static java.lang.String CATEGORY_SELECTED_ALTERNATIVE;
+ public static java.lang.String CATEGORY_TAB;
+ public static java.lang.String CATEGORY_TEST;
+ public static java.lang.String CATEGORY_UNIT_TEST;
+ public static java.lang.String CATEGORY_VOICE;
+ public static android.os.Parcelable$Creator CREATOR;
+ public static java.lang.String EXTRA_ALARM_COUNT;
+ public static java.lang.String EXTRA_ALLOW_MULTIPLE;
+ public static java.lang.String EXTRA_ALLOW_REPLACE;
+ public static java.lang.String EXTRA_ALTERNATE_INTENTS;
+ public static java.lang.String EXTRA_ASSIST_CONTEXT;
+ public static java.lang.String EXTRA_ASSIST_INPUT_DEVICE_ID;
+ public static java.lang.String EXTRA_ASSIST_INPUT_HINT_KEYBOARD;
+ public static java.lang.String EXTRA_ASSIST_PACKAGE;
+ public static java.lang.String EXTRA_ASSIST_UID;
+ public static java.lang.String EXTRA_BCC;
+ public static java.lang.String EXTRA_BUG_REPORT;
+ public static java.lang.String EXTRA_CC;
+ public static java.lang.String EXTRA_CHANGED_COMPONENT_NAME;
+ public static java.lang.String EXTRA_CHANGED_COMPONENT_NAME_LIST;
+ public static java.lang.String EXTRA_CHANGED_PACKAGE_LIST;
+ public static java.lang.String EXTRA_CHANGED_UID_LIST;
+ public static java.lang.String EXTRA_CHOOSER_REFINEMENT_INTENT_SENDER;
+ public static java.lang.String EXTRA_CHOSEN_COMPONENT;
+ public static java.lang.String EXTRA_CHOSEN_COMPONENT_INTENT_SENDER;
+ public static java.lang.String EXTRA_DATA_REMOVED;
+ public static java.lang.String EXTRA_DOCK_STATE;
+ public static int EXTRA_DOCK_STATE_CAR;
+ public static int EXTRA_DOCK_STATE_DESK;
+ public static int EXTRA_DOCK_STATE_HE_DESK;
+ public static int EXTRA_DOCK_STATE_LE_DESK;
+ public static int EXTRA_DOCK_STATE_UNDOCKED;
+ public static java.lang.String EXTRA_DONT_KILL_APP;
+ public static java.lang.String EXTRA_EMAIL;
+ public static java.lang.String EXTRA_HTML_TEXT;
+ public static java.lang.String EXTRA_INITIAL_INTENTS;
+ public static java.lang.String EXTRA_INSTALLER_PACKAGE_NAME;
+ public static java.lang.String EXTRA_INTENT;
+ public static java.lang.String EXTRA_KEY_EVENT;
+ public static java.lang.String EXTRA_LOCAL_ONLY;
+ public static java.lang.String EXTRA_MIME_TYPES;
+ public static java.lang.String EXTRA_NOT_UNKNOWN_SOURCE;
+ public static java.lang.String EXTRA_ORIGINATING_URI;
+ public static java.lang.String EXTRA_PHONE_NUMBER;
+ public static java.lang.String EXTRA_PROCESS_TEXT;
+ public static java.lang.String EXTRA_PROCESS_TEXT_READONLY;
+ public static java.lang.String EXTRA_REFERRER;
+ public static java.lang.String EXTRA_REFERRER_NAME;
+ public static java.lang.String EXTRA_REMOTE_INTENT_TOKEN;
+ public static java.lang.String EXTRA_REPLACEMENT_EXTRAS;
+ public static java.lang.String EXTRA_REPLACING;
+ public static java.lang.String EXTRA_RESTRICTIONS_BUNDLE;
+ public static java.lang.String EXTRA_RESTRICTIONS_INTENT;
+ public static java.lang.String EXTRA_RESTRICTIONS_LIST;
+ public static java.lang.String EXTRA_RESULT_RECEIVER;
+ public static java.lang.String EXTRA_RETURN_RESULT;
+ public static java.lang.String EXTRA_SHORTCUT_ICON;
+ public static java.lang.String EXTRA_SHORTCUT_ICON_RESOURCE;
+ public static java.lang.String EXTRA_SHORTCUT_INTENT;
+ public static java.lang.String EXTRA_SHORTCUT_NAME;
+ public static java.lang.String EXTRA_SHUTDOWN_USERSPACE_ONLY;
+ public static java.lang.String EXTRA_STREAM;
+ public static java.lang.String EXTRA_SUBJECT;
+ public static java.lang.String EXTRA_TEMPLATE;
+ public static java.lang.String EXTRA_TEXT;
+ public static java.lang.String EXTRA_TITLE;
+ public static java.lang.String EXTRA_UID;
+ public static java.lang.String EXTRA_USER;
+ public static int FILL_IN_ACTION;
+ public static int FILL_IN_CATEGORIES;
+ public static int FILL_IN_CLIP_DATA;
+ public static int FILL_IN_COMPONENT;
+ public static int FILL_IN_DATA;
+ public static int FILL_IN_PACKAGE;
+ public static int FILL_IN_SELECTOR;
+ public static int FILL_IN_SOURCE_BOUNDS;
+ public static int FLAG_ACTIVITY_BROUGHT_TO_FRONT;
+ public static int FLAG_ACTIVITY_CLEAR_TASK;
+ public static int FLAG_ACTIVITY_CLEAR_TOP;
+ public static int FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET;
+ public static int FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
+ public static int FLAG_ACTIVITY_FORWARD_RESULT;
+ public static int FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY;
+ public static int FLAG_ACTIVITY_MULTIPLE_TASK;
+ public static int FLAG_ACTIVITY_NEW_DOCUMENT;
+ public static int FLAG_ACTIVITY_NEW_TASK;
+ public static int FLAG_ACTIVITY_NO_ANIMATION;
+ public static int FLAG_ACTIVITY_NO_HISTORY;
+ public static int FLAG_ACTIVITY_NO_USER_ACTION;
+ public static int FLAG_ACTIVITY_PREVIOUS_IS_TOP;
+ public static int FLAG_ACTIVITY_REORDER_TO_FRONT;
+ public static int FLAG_ACTIVITY_RESET_TASK_IF_NEEDED;
+ public static int FLAG_ACTIVITY_RETAIN_IN_RECENTS;
+ public static int FLAG_ACTIVITY_SINGLE_TOP;
+ public static int FLAG_ACTIVITY_TASK_ON_HOME;
+ public static int FLAG_DEBUG_LOG_RESOLUTION;
+ public static int FLAG_EXCLUDE_STOPPED_PACKAGES;
+ public static int FLAG_FROM_BACKGROUND;
+ public static int FLAG_GRANT_PERSISTABLE_URI_PERMISSION;
+ public static int FLAG_GRANT_PREFIX_URI_PERMISSION;
+ public static int FLAG_GRANT_READ_URI_PERMISSION;
+ public static int FLAG_GRANT_WRITE_URI_PERMISSION;
+ public static int FLAG_INCLUDE_STOPPED_PACKAGES;
+ public static int FLAG_RECEIVER_FOREGROUND;
+ public static int FLAG_RECEIVER_NO_ABORT;
+ public static int FLAG_RECEIVER_REGISTERED_ONLY;
+ public static int FLAG_RECEIVER_REPLACE_PENDING;
+ public static java.lang.String METADATA_DOCK_HOME;
+ public static int URI_ALLOW_UNSAFE;
+ public static int URI_ANDROID_APP_SCHEME;
+ public static int URI_INTENT_SCHEME;
+}
+
+-keep class android.content.IntentFilter {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.String);
+ <init>(android.content.IntentFilter);
+
+ public java.util.Iterator actionsIterator();
+ public void addAction(java.lang.String);
+ public void addCategory(java.lang.String);
+ public void addDataAuthority(java.lang.String, java.lang.String);
+ public void addDataPath(java.lang.String, int);
+ public void addDataScheme(java.lang.String);
+ public void addDataSchemeSpecificPart(java.lang.String, int);
+ public void addDataType(java.lang.String);
+ public java.util.Iterator authoritiesIterator();
+ public java.util.Iterator categoriesIterator();
+ public int countActions();
+ public int countCategories();
+ public int countDataAuthorities();
+ public int countDataPaths();
+ public int countDataSchemeSpecificParts();
+ public int countDataSchemes();
+ public int countDataTypes();
+ public static android.content.IntentFilter create(java.lang.String, java.lang.String);
+ public int describeContents();
+ public void dump(android.util.Printer, java.lang.String);
+ public java.lang.String getAction(int);
+ public java.lang.String getCategory(int);
+ public android.content.IntentFilter$AuthorityEntry getDataAuthority(int);
+ public android.os.PatternMatcher getDataPath(int);
+ public java.lang.String getDataScheme(int);
+ public android.os.PatternMatcher getDataSchemeSpecificPart(int);
+ public java.lang.String getDataType(int);
+ public int getPriority();
+ public boolean hasAction(java.lang.String);
+ public boolean hasCategory(java.lang.String);
+ public boolean hasDataAuthority(android.net.Uri);
+ public boolean hasDataPath(java.lang.String);
+ public boolean hasDataScheme(java.lang.String);
+ public boolean hasDataSchemeSpecificPart(java.lang.String);
+ public boolean hasDataType(java.lang.String);
+ public int match(android.content.ContentResolver, android.content.Intent, boolean, java.lang.String);
+ public int match(java.lang.String, java.lang.String, java.lang.String, android.net.Uri, java.util.Set, java.lang.String);
+ public boolean matchAction(java.lang.String);
+ public java.lang.String matchCategories(java.util.Set);
+ public int matchData(java.lang.String, java.lang.String, android.net.Uri);
+ public int matchDataAuthority(android.net.Uri);
+ public java.util.Iterator pathsIterator();
+ public void readFromXml(org.xmlpull.v1.XmlPullParser);
+ public java.util.Iterator schemeSpecificPartsIterator();
+ public java.util.Iterator schemesIterator();
+ public void setPriority(int);
+ public java.util.Iterator typesIterator();
+ public void writeToParcel(android.os.Parcel, int);
+ public void writeToXml(org.xmlpull.v1.XmlSerializer);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int MATCH_ADJUSTMENT_MASK;
+ public static int MATCH_ADJUSTMENT_NORMAL;
+ public static int MATCH_CATEGORY_EMPTY;
+ public static int MATCH_CATEGORY_HOST;
+ public static int MATCH_CATEGORY_MASK;
+ public static int MATCH_CATEGORY_PATH;
+ public static int MATCH_CATEGORY_PORT;
+ public static int MATCH_CATEGORY_SCHEME;
+ public static int MATCH_CATEGORY_SCHEME_SPECIFIC_PART;
+ public static int MATCH_CATEGORY_TYPE;
+ public static int NO_MATCH_ACTION;
+ public static int NO_MATCH_CATEGORY;
+ public static int NO_MATCH_DATA;
+ public static int NO_MATCH_TYPE;
+ public static int SYSTEM_HIGH_PRIORITY;
+ public static int SYSTEM_LOW_PRIORITY;
+}
+
+-keep class android.content.IntentFilter$AuthorityEntry {
+ <init>(java.lang.String, java.lang.String);
+
+ public java.lang.String getHost();
+ public int getPort();
+ public int match(android.net.Uri);
+
+
+}
+
+-keep class android.content.IntentFilter$MalformedMimeTypeException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class android.content.IntentSender {
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public java.lang.String getCreatorPackage();
+ public int getCreatorUid();
+ public android.os.UserHandle getCreatorUserHandle();
+ public java.lang.String getTargetPackage();
+ public int hashCode();
+ public static android.content.IntentSender readIntentSenderOrNullFromParcel(android.os.Parcel);
+ public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender$OnFinished, android.os.Handler);
+ public void sendIntent(android.content.Context, int, android.content.Intent, android.content.IntentSender$OnFinished, android.os.Handler, java.lang.String);
+ public java.lang.String toString();
+ public static void writeIntentSenderOrNullToParcel(android.content.IntentSender, android.os.Parcel);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.IntentSender$OnFinished {
+
+ public abstract void onSendFinished(android.content.IntentSender, android.content.Intent, int, java.lang.String, android.os.Bundle);
+
+
+}
+
+-keep class android.content.IntentSender$SendIntentException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.Exception);
+
+
+
+}
+
+-keep class android.content.OperationApplicationException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+ <init>(int);
+ <init>(java.lang.String, int);
+
+ public int getNumSuccessfulYieldPoints();
+
+
+}
+
+-keep class android.content.PeriodicSync {
+ <init>(android.accounts.Account, java.lang.String, android.os.Bundle, long);
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public android.accounts.Account account;
+ public java.lang.String authority;
+ public android.os.Bundle extras;
+ public long period;
+}
+
+-keep class android.content.ServiceConnection {
+
+ public abstract void onServiceConnected(android.content.ComponentName, android.os.IBinder);
+ public abstract void onServiceDisconnected(android.content.ComponentName);
+
+
+}
+
+-keep class android.content.SharedPreferences {
+
+ public abstract boolean contains(java.lang.String);
+ public abstract android.content.SharedPreferences$Editor edit();
+ public abstract java.util.Map getAll();
+ public abstract boolean getBoolean(java.lang.String, boolean);
+ public abstract float getFloat(java.lang.String, float);
+ public abstract int getInt(java.lang.String, int);
+ public abstract long getLong(java.lang.String, long);
+ public abstract java.lang.String getString(java.lang.String, java.lang.String);
+ public abstract java.util.Set getStringSet(java.lang.String, java.util.Set);
+ public abstract void registerOnSharedPreferenceChangeListener(android.content.SharedPreferences$OnSharedPreferenceChangeListener);
+ public abstract void unregisterOnSharedPreferenceChangeListener(android.content.SharedPreferences$OnSharedPreferenceChangeListener);
+
+
+}
+
+-keep class android.content.SharedPreferences$Editor {
+
+ public abstract void apply();
+ public abstract android.content.SharedPreferences$Editor clear();
+ public abstract boolean commit();
+ public abstract android.content.SharedPreferences$Editor putBoolean(java.lang.String, boolean);
+ public abstract android.content.SharedPreferences$Editor putFloat(java.lang.String, float);
+ public abstract android.content.SharedPreferences$Editor putInt(java.lang.String, int);
+ public abstract android.content.SharedPreferences$Editor putLong(java.lang.String, long);
+ public abstract android.content.SharedPreferences$Editor putString(java.lang.String, java.lang.String);
+ public abstract android.content.SharedPreferences$Editor putStringSet(java.lang.String, java.util.Set);
+ public abstract android.content.SharedPreferences$Editor remove(java.lang.String);
+
+
+}
+
+-keep class android.content.SharedPreferences$OnSharedPreferenceChangeListener {
+
+ public abstract void onSharedPreferenceChanged(android.content.SharedPreferences, java.lang.String);
+
+
+}
+
+-keep class android.content.SyncAdapterType {
+ <init>(java.lang.String, java.lang.String, boolean, boolean);
+ <init>(android.os.Parcel);
+
+ public boolean allowParallelSyncs();
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public java.lang.String getSettingsActivity();
+ public int hashCode();
+ public boolean isAlwaysSyncable();
+ public boolean isUserVisible();
+ public static android.content.SyncAdapterType newKey(java.lang.String, java.lang.String);
+ public boolean supportsUploading();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public java.lang.String accountType;
+ public java.lang.String authority;
+ public boolean isKey;
+}
+
+-keep class android.content.SyncInfo {
+
+ public int describeContents();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public android.accounts.Account account;
+ public java.lang.String authority;
+ public long startTime;
+}
+
+-keep class android.content.SyncRequest {
+
+ public int describeContents();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.SyncStatusObserver {
+
+ public abstract void onStatusChanged(int);
+
+
+}
+
+-keep class android.content.UriPermission {
+
+ public int describeContents();
+ public long getPersistedTime();
+ public android.net.Uri getUri();
+ public boolean isReadPermission();
+ public boolean isWritePermission();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static long INVALID_TIME;
+}
+
+-keep class android.content.pm.ActivityInfo {
+ <init>();
+ <init>(android.content.pm.ActivityInfo);
+
+ public int describeContents();
+ public void dump(android.util.Printer, java.lang.String);
+ public int getThemeResource();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static int CONFIG_DENSITY;
+ public static int CONFIG_FONT_SCALE;
+ public static int CONFIG_KEYBOARD;
+ public static int CONFIG_KEYBOARD_HIDDEN;
+ public static int CONFIG_LAYOUT_DIRECTION;
+ public static int CONFIG_LOCALE;
+ public static int CONFIG_MCC;
+ public static int CONFIG_MNC;
+ public static int CONFIG_NAVIGATION;
+ public static int CONFIG_ORIENTATION;
+ public static int CONFIG_SCREEN_LAYOUT;
+ public static int CONFIG_SCREEN_SIZE;
+ public static int CONFIG_SMALLEST_SCREEN_SIZE;
+ public static int CONFIG_TOUCHSCREEN;
+ public static int CONFIG_UI_MODE;
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int DOCUMENT_LAUNCH_ALWAYS;
+ public static int DOCUMENT_LAUNCH_INTO_EXISTING;
+ public static int DOCUMENT_LAUNCH_NEVER;
+ public static int DOCUMENT_LAUNCH_NONE;
+ public static int FLAG_ALLOW_TASK_REPARENTING;
+ public static int FLAG_ALWAYS_RETAIN_TASK_STATE;
+ public static int FLAG_AUTO_REMOVE_FROM_RECENTS;
+ public static int FLAG_CLEAR_TASK_ON_LAUNCH;
+ public static int FLAG_EXCLUDE_FROM_RECENTS;
+ public static int FLAG_FINISH_ON_CLOSE_SYSTEM_DIALOGS;
+ public static int FLAG_FINISH_ON_TASK_LAUNCH;
+ public static int FLAG_HARDWARE_ACCELERATED;
+ public static int FLAG_IMMERSIVE;
+ public static int FLAG_MULTIPROCESS;
+ public static int FLAG_NO_HISTORY;
+ public static int FLAG_RELINQUISH_TASK_IDENTITY;
+ public static int FLAG_RESUME_WHILE_PAUSING;
+ public static int FLAG_SINGLE_USER;
+ public static int FLAG_STATE_NOT_NEEDED;
+ public static int LAUNCH_MULTIPLE;
+ public static int LAUNCH_SINGLE_INSTANCE;
+ public static int LAUNCH_SINGLE_TASK;
+ public static int LAUNCH_SINGLE_TOP;
+ public static int PERSIST_ACROSS_REBOOTS;
+ public static int PERSIST_NEVER;
+ public static int PERSIST_ROOT_ONLY;
+ public static int SCREEN_ORIENTATION_BEHIND;
+ public static int SCREEN_ORIENTATION_FULL_SENSOR;
+ public static int SCREEN_ORIENTATION_FULL_USER;
+ public static int SCREEN_ORIENTATION_LANDSCAPE;
+ public static int SCREEN_ORIENTATION_LOCKED;
+ public static int SCREEN_ORIENTATION_NOSENSOR;
+ public static int SCREEN_ORIENTATION_PORTRAIT;
+ public static int SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
+ public static int SCREEN_ORIENTATION_REVERSE_PORTRAIT;
+ public static int SCREEN_ORIENTATION_SENSOR;
+ public static int SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
+ public static int SCREEN_ORIENTATION_SENSOR_PORTRAIT;
+ public static int SCREEN_ORIENTATION_UNSPECIFIED;
+ public static int SCREEN_ORIENTATION_USER;
+ public static int SCREEN_ORIENTATION_USER_LANDSCAPE;
+ public static int SCREEN_ORIENTATION_USER_PORTRAIT;
+ public static int UIOPTION_SPLIT_ACTION_BAR_WHEN_NARROW;
+ public int configChanges;
+ public int documentLaunchMode;
+ public int flags;
+ public int launchMode;
+ public int maxRecents;
+ public java.lang.String parentActivityName;
+ public java.lang.String permission;
+ public int persistableMode;
+ public int screenOrientation;
+ public int softInputMode;
+ public java.lang.String targetActivity;
+ public java.lang.String taskAffinity;
+ public int theme;
+ public int uiOptions;
+}
+
+-keep class android.content.pm.ApplicationInfo {
+ <init>();
+ <init>(android.content.pm.ApplicationInfo);
+
+ public int describeContents();
+ public void dump(android.util.Printer, java.lang.String);
+ public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_ALLOW_BACKUP;
+ public static int FLAG_ALLOW_CLEAR_USER_DATA;
+ public static int FLAG_ALLOW_TASK_REPARENTING;
+ public static int FLAG_DEBUGGABLE;
+ public static int FLAG_EXTERNAL_STORAGE;
+ public static int FLAG_EXTRACT_NATIVE_LIBS;
+ public static int FLAG_FACTORY_TEST;
+ public static int FLAG_FULL_BACKUP_ONLY;
+ public static int FLAG_HARDWARE_ACCELERATED;
+ public static int FLAG_HAS_CODE;
+ public static int FLAG_INSTALLED;
+ public static int FLAG_IS_DATA_ONLY;
+ public static int FLAG_IS_GAME;
+ public static int FLAG_KILL_AFTER_RESTORE;
+ public static int FLAG_LARGE_HEAP;
+ public static int FLAG_MULTIARCH;
+ public static int FLAG_PERSISTENT;
+ public static int FLAG_RESIZEABLE_FOR_SCREENS;
+ public static int FLAG_RESTORE_ANY_VERSION;
+ public static int FLAG_STOPPED;
+ public static int FLAG_SUPPORTS_LARGE_SCREENS;
+ public static int FLAG_SUPPORTS_NORMAL_SCREENS;
+ public static int FLAG_SUPPORTS_RTL;
+ public static int FLAG_SUPPORTS_SCREEN_DENSITIES;
+ public static int FLAG_SUPPORTS_SMALL_SCREENS;
+ public static int FLAG_SUPPORTS_XLARGE_SCREENS;
+ public static int FLAG_SYSTEM;
+ public static int FLAG_TEST_ONLY;
+ public static int FLAG_UPDATED_SYSTEM_APP;
+ public static int FLAG_USES_CLEARTEXT_TRAFFIC;
+ public static int FLAG_VM_SAFE_MODE;
+ public java.lang.String backupAgentName;
+ public java.lang.String className;
+ public int compatibleWidthLimitDp;
+ public java.lang.String dataDir;
+ public int descriptionRes;
+ public boolean enabled;
+ public int flags;
+ public int largestWidthLimitDp;
+ public java.lang.String manageSpaceActivityName;
+ public java.lang.String nativeLibraryDir;
+ public java.lang.String permission;
+ public java.lang.String processName;
+ public java.lang.String publicSourceDir;
+ public int requiresSmallestWidthDp;
+ public java.lang.String[] sharedLibraryFiles;
+ public java.lang.String sourceDir;
+ public java.lang.String[] splitPublicSourceDirs;
+ public java.lang.String[] splitSourceDirs;
+ public int targetSdkVersion;
+ public java.lang.String taskAffinity;
+ public int theme;
+ public int uiOptions;
+ public int uid;
+}
+
+-keep class android.content.pm.ComponentInfo {
+ <init>();
+ <init>(android.content.pm.ComponentInfo);
+ <init>(android.os.Parcel);
+
+ protected void dumpBack(android.util.Printer, java.lang.String);
+ protected void dumpFront(android.util.Printer, java.lang.String);
+ public int getBannerResource();
+ public int getIconResource();
+ public int getLogoResource();
+ public boolean isEnabled();
+ public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public android.content.pm.ApplicationInfo applicationInfo;
+ public int descriptionRes;
+ public boolean enabled;
+ public boolean exported;
+ public java.lang.String processName;
+}
+
+-keep class android.content.pm.ConfigurationInfo {
+ <init>();
+ <init>(android.content.pm.ConfigurationInfo);
+
+ public int describeContents();
+ public java.lang.String getGlEsVersion();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int GL_ES_VERSION_UNDEFINED;
+ public static int INPUT_FEATURE_FIVE_WAY_NAV;
+ public static int INPUT_FEATURE_HARD_KEYBOARD;
+ public int reqGlEsVersion;
+ public int reqInputFeatures;
+ public int reqKeyboardType;
+ public int reqNavigation;
+ public int reqTouchScreen;
+}
+
+-keep class android.content.pm.FeatureGroupInfo {
+ <init>();
+ <init>(android.content.pm.FeatureGroupInfo);
+
+ public int describeContents();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public android.content.pm.FeatureInfo[] features;
+}
+
+-keep class android.content.pm.FeatureInfo {
+ <init>();
+ <init>(android.content.pm.FeatureInfo);
+
+ public int describeContents();
+ public java.lang.String getGlEsVersion();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_REQUIRED;
+ public static int GL_ES_VERSION_UNDEFINED;
+ public int flags;
+ public java.lang.String name;
+ public int reqGlEsVersion;
+}
+
+-keep class android.content.pm.InstrumentationInfo {
+ <init>();
+ <init>(android.content.pm.InstrumentationInfo);
+
+ public int describeContents();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public java.lang.String dataDir;
+ public boolean functionalTest;
+ public boolean handleProfiling;
+ public java.lang.String publicSourceDir;
+ public java.lang.String sourceDir;
+ public java.lang.String[] splitPublicSourceDirs;
+ public java.lang.String[] splitSourceDirs;
+ public java.lang.String targetPackage;
+}
+
+-keep class android.content.pm.PackageInfo {
+ <init>();
+
+ public int describeContents();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int INSTALL_LOCATION_AUTO;
+ public static int INSTALL_LOCATION_INTERNAL_ONLY;
+ public static int INSTALL_LOCATION_PREFER_EXTERNAL;
+ public static int REQUESTED_PERMISSION_GRANTED;
+ public android.content.pm.ActivityInfo[] activities;
+ public android.content.pm.ApplicationInfo applicationInfo;
+ public int baseRevisionCode;
+ public android.content.pm.ConfigurationInfo[] configPreferences;
+ public android.content.pm.FeatureGroupInfo[] featureGroups;
+ public long firstInstallTime;
+ public int[] gids;
+ public int installLocation;
+ public android.content.pm.InstrumentationInfo[] instrumentation;
+ public long lastUpdateTime;
+ public java.lang.String packageName;
+ public android.content.pm.PermissionInfo[] permissions;
+ public android.content.pm.ProviderInfo[] providers;
+ public android.content.pm.ActivityInfo[] receivers;
+ public android.content.pm.FeatureInfo[] reqFeatures;
+ public java.lang.String[] requestedPermissions;
+ public int[] requestedPermissionsFlags;
+ public android.content.pm.ServiceInfo[] services;
+ public java.lang.String sharedUserId;
+ public int sharedUserLabel;
+ public android.content.pm.Signature[] signatures;
+ public java.lang.String[] splitNames;
+ public int[] splitRevisionCodes;
+ public int versionCode;
+ public java.lang.String versionName;
+}
+
+-keep class android.content.pm.PackageInstaller {
+
+ public void abandonSession(int);
+ public int createSession(android.content.pm.PackageInstaller$SessionParams);
+ public java.util.List getAllSessions();
+ public java.util.List getMySessions();
+ public android.content.pm.PackageInstaller$SessionInfo getSessionInfo(int);
+ public android.content.pm.PackageInstaller$Session openSession(int);
+ public void registerSessionCallback(android.content.pm.PackageInstaller$SessionCallback);
+ public void registerSessionCallback(android.content.pm.PackageInstaller$SessionCallback, android.os.Handler);
+ public void uninstall(java.lang.String, android.content.IntentSender);
+ public void unregisterSessionCallback(android.content.pm.PackageInstaller$SessionCallback);
+ public void updateSessionAppIcon(int, android.graphics.Bitmap);
+ public void updateSessionAppLabel(int, java.lang.CharSequence);
+
+
+ public static java.lang.String ACTION_SESSION_DETAILS;
+ public static java.lang.String EXTRA_OTHER_PACKAGE_NAME;
+ public static java.lang.String EXTRA_PACKAGE_NAME;
+ public static java.lang.String EXTRA_SESSION_ID;
+ public static java.lang.String EXTRA_STATUS;
+ public static java.lang.String EXTRA_STATUS_MESSAGE;
+ public static java.lang.String EXTRA_STORAGE_PATH;
+ public static int STATUS_FAILURE;
+ public static int STATUS_FAILURE_ABORTED;
+ public static int STATUS_FAILURE_BLOCKED;
+ public static int STATUS_FAILURE_CONFLICT;
+ public static int STATUS_FAILURE_INCOMPATIBLE;
+ public static int STATUS_FAILURE_INVALID;
+ public static int STATUS_FAILURE_STORAGE;
+ public static int STATUS_PENDING_USER_ACTION;
+ public static int STATUS_SUCCESS;
+}
+
+-keep class android.content.pm.PackageInstaller$Session {
+
+ public void abandon();
+ public void close();
+ public void commit(android.content.IntentSender);
+ public void fsync(java.io.OutputStream);
+ public java.lang.String[] getNames();
+ public java.io.InputStream openRead(java.lang.String);
+ public java.io.OutputStream openWrite(java.lang.String, long, long);
+ public void setStagingProgress(float);
+
+
+}
+
+-keep class android.content.pm.PackageInstaller$SessionCallback {
+ <init>();
+
+ public abstract void onActiveChanged(int, boolean);
+ public abstract void onBadgingChanged(int);
+ public abstract void onCreated(int);
+ public abstract void onFinished(int, boolean);
+ public abstract void onProgressChanged(int, float);
+
+
+}
+
+-keep class android.content.pm.PackageInstaller$SessionInfo {
+
+ public android.content.Intent createDetailsIntent();
+ public int describeContents();
+ public android.graphics.Bitmap getAppIcon();
+ public java.lang.CharSequence getAppLabel();
+ public java.lang.String getAppPackageName();
+ public java.lang.String getInstallerPackageName();
+ public float getProgress();
+ public int getSessionId();
+ public boolean isActive();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.pm.PackageInstaller$SessionParams {
+ <init>(int);
+
+ public int describeContents();
+ public void setAppIcon(android.graphics.Bitmap);
+ public void setAppLabel(java.lang.CharSequence);
+ public void setAppPackageName(java.lang.String);
+ public void setInstallLocation(int);
+ public void setOriginatingUri(android.net.Uri);
+ public void setReferrerUri(android.net.Uri);
+ public void setSize(long);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int MODE_FULL_INSTALL;
+ public static int MODE_INHERIT_EXISTING;
+}
+
+-keep class android.content.pm.PackageItemInfo {
+ <init>();
+ <init>(android.content.pm.PackageItemInfo);
+ <init>(android.os.Parcel);
+
+ protected void dumpBack(android.util.Printer, java.lang.String);
+ protected void dumpFront(android.util.Printer, java.lang.String);
+ public android.graphics.drawable.Drawable loadBanner(android.content.pm.PackageManager);
+ public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+ public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ public android.graphics.drawable.Drawable loadLogo(android.content.pm.PackageManager);
+ public android.graphics.drawable.Drawable loadUnbadgedIcon(android.content.pm.PackageManager);
+ public android.content.res.XmlResourceParser loadXmlMetaData(android.content.pm.PackageManager, java.lang.String);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public int banner;
+ public int icon;
+ public int labelRes;
+ public int logo;
+ public android.os.Bundle metaData;
+ public java.lang.String name;
+ public java.lang.CharSequence nonLocalizedLabel;
+ public java.lang.String packageName;
+}
+
+-keep class android.content.pm.PackageManager {
+ <init>();
+
+ public abstract void addPackageToPreferred(java.lang.String);
+ public abstract boolean addPermission(android.content.pm.PermissionInfo);
+ public abstract boolean addPermissionAsync(android.content.pm.PermissionInfo);
+ public abstract void addPreferredActivity(android.content.IntentFilter, int, android.content.ComponentName[], android.content.ComponentName);
+ public abstract java.lang.String[] canonicalToCurrentPackageNames(java.lang.String[]);
+ public abstract int checkPermission(java.lang.String, java.lang.String);
+ public abstract int checkSignatures(java.lang.String, java.lang.String);
+ public abstract int checkSignatures(int, int);
+ public abstract void clearPackagePreferredActivities(java.lang.String);
+ public abstract java.lang.String[] currentToCanonicalPackageNames(java.lang.String[]);
+ public abstract void extendVerificationTimeout(int, int, long);
+ public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.ComponentName);
+ public abstract android.graphics.drawable.Drawable getActivityBanner(android.content.Intent);
+ public abstract android.graphics.drawable.Drawable getActivityIcon(android.content.ComponentName);
+ public abstract android.graphics.drawable.Drawable getActivityIcon(android.content.Intent);
+ public abstract android.content.pm.ActivityInfo getActivityInfo(android.content.ComponentName, int);
+ public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.ComponentName);
+ public abstract android.graphics.drawable.Drawable getActivityLogo(android.content.Intent);
+ public abstract java.util.List getAllPermissionGroups(int);
+ public abstract android.graphics.drawable.Drawable getApplicationBanner(android.content.pm.ApplicationInfo);
+ public abstract android.graphics.drawable.Drawable getApplicationBanner(java.lang.String);
+ public abstract int getApplicationEnabledSetting(java.lang.String);
+ public abstract android.graphics.drawable.Drawable getApplicationIcon(android.content.pm.ApplicationInfo);
+ public abstract android.graphics.drawable.Drawable getApplicationIcon(java.lang.String);
+ public abstract android.content.pm.ApplicationInfo getApplicationInfo(java.lang.String, int);
+ public abstract java.lang.CharSequence getApplicationLabel(android.content.pm.ApplicationInfo);
+ public abstract android.graphics.drawable.Drawable getApplicationLogo(android.content.pm.ApplicationInfo);
+ public abstract android.graphics.drawable.Drawable getApplicationLogo(java.lang.String);
+ public abstract int getComponentEnabledSetting(android.content.ComponentName);
+ public abstract android.graphics.drawable.Drawable getDefaultActivityIcon();
+ public abstract android.graphics.drawable.Drawable getDrawable(java.lang.String, int, android.content.pm.ApplicationInfo);
+ public abstract java.util.List getInstalledApplications(int);
+ public abstract java.util.List getInstalledPackages(int);
+ public abstract java.lang.String getInstallerPackageName(java.lang.String);
+ public abstract android.content.pm.InstrumentationInfo getInstrumentationInfo(android.content.ComponentName, int);
+ public abstract android.content.Intent getLaunchIntentForPackage(java.lang.String);
+ public abstract android.content.Intent getLeanbackLaunchIntentForPackage(java.lang.String);
+ public abstract java.lang.String getNameForUid(int);
+ public android.content.pm.PackageInfo getPackageArchiveInfo(java.lang.String, int);
+ public abstract int[] getPackageGids(java.lang.String);
+ public abstract android.content.pm.PackageInfo getPackageInfo(java.lang.String, int);
+ public abstract android.content.pm.PackageInstaller getPackageInstaller();
+ public abstract java.lang.String[] getPackagesForUid(int);
+ public abstract java.util.List getPackagesHoldingPermissions(java.lang.String[], int);
+ public abstract android.content.pm.PermissionGroupInfo getPermissionGroupInfo(java.lang.String, int);
+ public abstract android.content.pm.PermissionInfo getPermissionInfo(java.lang.String, int);
+ public abstract int getPreferredActivities(java.util.List, java.util.List, java.lang.String);
+ public abstract java.util.List getPreferredPackages(int);
+ public abstract android.content.pm.ProviderInfo getProviderInfo(android.content.ComponentName, int);
+ public abstract android.content.pm.ActivityInfo getReceiverInfo(android.content.ComponentName, int);
+ public abstract android.content.res.Resources getResourcesForActivity(android.content.ComponentName);
+ public abstract android.content.res.Resources getResourcesForApplication(android.content.pm.ApplicationInfo);
+ public abstract android.content.res.Resources getResourcesForApplication(java.lang.String);
+ public abstract android.content.pm.ServiceInfo getServiceInfo(android.content.ComponentName, int);
+ public abstract android.content.pm.FeatureInfo[] getSystemAvailableFeatures();
+ public abstract java.lang.String[] getSystemSharedLibraryNames();
+ public abstract java.lang.CharSequence getText(java.lang.String, int, android.content.pm.ApplicationInfo);
+ public abstract android.graphics.drawable.Drawable getUserBadgedDrawableForDensity(android.graphics.drawable.Drawable, android.os.UserHandle, android.graphics.Rect, int);
+ public abstract android.graphics.drawable.Drawable getUserBadgedIcon(android.graphics.drawable.Drawable, android.os.UserHandle);
+ public abstract java.lang.CharSequence getUserBadgedLabel(java.lang.CharSequence, android.os.UserHandle);
+ public abstract android.content.res.XmlResourceParser getXml(java.lang.String, int, android.content.pm.ApplicationInfo);
+ public abstract boolean hasSystemFeature(java.lang.String);
+ public abstract boolean isPermissionRevokedByPolicy(java.lang.String, java.lang.String);
+ public abstract boolean isSafeMode();
+ public abstract java.util.List queryBroadcastReceivers(android.content.Intent, int);
+ public abstract java.util.List queryContentProviders(java.lang.String, int, int);
+ public abstract java.util.List queryInstrumentation(java.lang.String, int);
+ public abstract java.util.List queryIntentActivities(android.content.Intent, int);
+ public abstract java.util.List queryIntentActivityOptions(android.content.ComponentName, android.content.Intent[], android.content.Intent, int);
+ public abstract java.util.List queryIntentContentProviders(android.content.Intent, int);
+ public abstract java.util.List queryIntentServices(android.content.Intent, int);
+ public abstract java.util.List queryPermissionsByGroup(java.lang.String, int);
+ public abstract void removePackageFromPreferred(java.lang.String);
+ public abstract void removePermission(java.lang.String);
+ public abstract android.content.pm.ResolveInfo resolveActivity(android.content.Intent, int);
+ public abstract android.content.pm.ProviderInfo resolveContentProvider(java.lang.String, int);
+ public abstract android.content.pm.ResolveInfo resolveService(android.content.Intent, int);
+ public abstract void setApplicationEnabledSetting(java.lang.String, int, int);
+ public abstract void setComponentEnabledSetting(android.content.ComponentName, int, int);
+ public abstract void setInstallerPackageName(java.lang.String, java.lang.String);
+ public abstract void verifyPendingInstall(int, int);
+
+
+ public static int COMPONENT_ENABLED_STATE_DEFAULT;
+ public static int COMPONENT_ENABLED_STATE_DISABLED;
+ public static int COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED;
+ public static int COMPONENT_ENABLED_STATE_DISABLED_USER;
+ public static int COMPONENT_ENABLED_STATE_ENABLED;
+ public static int DONT_KILL_APP;
+ public static java.lang.String EXTRA_VERIFICATION_ID;
+ public static java.lang.String EXTRA_VERIFICATION_RESULT;
+ public static java.lang.String FEATURE_APP_WIDGETS;
+ public static java.lang.String FEATURE_AUDIO_LOW_LATENCY;
+ public static java.lang.String FEATURE_AUDIO_OUTPUT;
+ public static java.lang.String FEATURE_AUDIO_PRO;
+ public static java.lang.String FEATURE_AUTOMOTIVE;
+ public static java.lang.String FEATURE_BACKUP;
+ public static java.lang.String FEATURE_BLUETOOTH;
+ public static java.lang.String FEATURE_BLUETOOTH_LE;
+ public static java.lang.String FEATURE_CAMERA;
+ public static java.lang.String FEATURE_CAMERA_ANY;
+ public static java.lang.String FEATURE_CAMERA_AUTOFOCUS;
+ public static java.lang.String FEATURE_CAMERA_CAPABILITY_MANUAL_POST_PROCESSING;
+ public static java.lang.String FEATURE_CAMERA_CAPABILITY_MANUAL_SENSOR;
+ public static java.lang.String FEATURE_CAMERA_CAPABILITY_RAW;
+ public static java.lang.String FEATURE_CAMERA_EXTERNAL;
+ public static java.lang.String FEATURE_CAMERA_FLASH;
+ public static java.lang.String FEATURE_CAMERA_FRONT;
+ public static java.lang.String FEATURE_CAMERA_LEVEL_FULL;
+ public static java.lang.String FEATURE_CONNECTION_SERVICE;
+ public static java.lang.String FEATURE_CONSUMER_IR;
+ public static java.lang.String FEATURE_DEVICE_ADMIN;
+ public static java.lang.String FEATURE_FAKETOUCH;
+ public static java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_DISTINCT;
+ public static java.lang.String FEATURE_FAKETOUCH_MULTITOUCH_JAZZHAND;
+ public static java.lang.String FEATURE_FINGERPRINT;
+ public static java.lang.String FEATURE_GAMEPAD;
+ public static java.lang.String FEATURE_HIFI_SENSORS;
+ public static java.lang.String FEATURE_HOME_SCREEN;
+ public static java.lang.String FEATURE_INPUT_METHODS;
+ public static java.lang.String FEATURE_LEANBACK;
+ public static java.lang.String FEATURE_LIVE_TV;
+ public static java.lang.String FEATURE_LIVE_WALLPAPER;
+ public static java.lang.String FEATURE_LOCATION;
+ public static java.lang.String FEATURE_LOCATION_GPS;
+ public static java.lang.String FEATURE_LOCATION_NETWORK;
+ public static java.lang.String FEATURE_MANAGED_USERS;
+ public static java.lang.String FEATURE_MICROPHONE;
+ public static java.lang.String FEATURE_MIDI;
+ public static java.lang.String FEATURE_NFC;
+ public static java.lang.String FEATURE_NFC_HOST_CARD_EMULATION;
+ public static java.lang.String FEATURE_OPENGLES_EXTENSION_PACK;
+ public static java.lang.String FEATURE_PRINTING;
+ public static java.lang.String FEATURE_SCREEN_LANDSCAPE;
+ public static java.lang.String FEATURE_SCREEN_PORTRAIT;
+ public static java.lang.String FEATURE_SECURELY_REMOVES_USERS;
+ public static java.lang.String FEATURE_SENSOR_ACCELEROMETER;
+ public static java.lang.String FEATURE_SENSOR_AMBIENT_TEMPERATURE;
+ public static java.lang.String FEATURE_SENSOR_BAROMETER;
+ public static java.lang.String FEATURE_SENSOR_COMPASS;
+ public static java.lang.String FEATURE_SENSOR_GYROSCOPE;
+ public static java.lang.String FEATURE_SENSOR_HEART_RATE;
+ public static java.lang.String FEATURE_SENSOR_HEART_RATE_ECG;
+ public static java.lang.String FEATURE_SENSOR_LIGHT;
+ public static java.lang.String FEATURE_SENSOR_PROXIMITY;
+ public static java.lang.String FEATURE_SENSOR_RELATIVE_HUMIDITY;
+ public static java.lang.String FEATURE_SENSOR_STEP_COUNTER;
+ public static java.lang.String FEATURE_SENSOR_STEP_DETECTOR;
+ public static java.lang.String FEATURE_SIP;
+ public static java.lang.String FEATURE_SIP_VOIP;
+ public static java.lang.String FEATURE_TELEPHONY;
+ public static java.lang.String FEATURE_TELEPHONY_CDMA;
+ public static java.lang.String FEATURE_TELEPHONY_GSM;
+ public static java.lang.String FEATURE_TELEVISION;
+ public static java.lang.String FEATURE_TOUCHSCREEN;
+ public static java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH;
+ public static java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_DISTINCT;
+ public static java.lang.String FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND;
+ public static java.lang.String FEATURE_USB_ACCESSORY;
+ public static java.lang.String FEATURE_USB_HOST;
+ public static java.lang.String FEATURE_VERIFIED_BOOT;
+ public static java.lang.String FEATURE_WATCH;
+ public static java.lang.String FEATURE_WEBVIEW;
+ public static java.lang.String FEATURE_WIFI;
+ public static java.lang.String FEATURE_WIFI_DIRECT;
+ public static int GET_ACTIVITIES;
+ public static int GET_CONFIGURATIONS;
+ public static int GET_DISABLED_COMPONENTS;
+ public static int GET_DISABLED_UNTIL_USED_COMPONENTS;
+ public static int GET_GIDS;
+ public static int GET_INSTRUMENTATION;
+ public static int GET_INTENT_FILTERS;
+ public static int GET_META_DATA;
+ public static int GET_PERMISSIONS;
+ public static int GET_PROVIDERS;
+ public static int GET_RECEIVERS;
+ public static int GET_RESOLVED_FILTER;
+ public static int GET_SERVICES;
+ public static int GET_SHARED_LIBRARY_FILES;
+ public static int GET_SIGNATURES;
+ public static int GET_UNINSTALLED_PACKAGES;
+ public static int GET_URI_PERMISSION_PATTERNS;
+ public static int MATCH_ALL;
+ public static int MATCH_DEFAULT_ONLY;
+ public static long MAXIMUM_VERIFICATION_TIMEOUT;
+ public static int PERMISSION_DENIED;
+ public static int PERMISSION_GRANTED;
+ public static int SIGNATURE_FIRST_NOT_SIGNED;
+ public static int SIGNATURE_MATCH;
+ public static int SIGNATURE_NEITHER_SIGNED;
+ public static int SIGNATURE_NO_MATCH;
+ public static int SIGNATURE_SECOND_NOT_SIGNED;
+ public static int SIGNATURE_UNKNOWN_PACKAGE;
+ public static int VERIFICATION_ALLOW;
+ public static int VERIFICATION_REJECT;
+}
+
+-keep class android.content.pm.PackageManager$NameNotFoundException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class android.content.pm.PathPermission {
+ <init>(java.lang.String, int, java.lang.String, java.lang.String);
+ <init>(android.os.Parcel);
+
+ public java.lang.String getReadPermission();
+ public java.lang.String getWritePermission();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.pm.PermissionGroupInfo {
+ <init>();
+ <init>(android.content.pm.PermissionGroupInfo);
+
+ public int describeContents();
+ public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_PERSONAL_INFO;
+ public int descriptionRes;
+ public int flags;
+ public java.lang.CharSequence nonLocalizedDescription;
+ public int priority;
+}
+
+-keep class android.content.pm.PermissionInfo {
+ <init>();
+ <init>(android.content.pm.PermissionInfo);
+
+ public int describeContents();
+ public java.lang.CharSequence loadDescription(android.content.pm.PackageManager);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_COSTS_MONEY;
+ public static int FLAG_INSTALLED;
+ public static int PROTECTION_DANGEROUS;
+ public static int PROTECTION_FLAG_APPOP;
+ public static int PROTECTION_FLAG_DEVELOPMENT;
+ public static int PROTECTION_FLAG_INSTALLER;
+ public static int PROTECTION_FLAG_PRE23;
+ public static int PROTECTION_FLAG_PREINSTALLED;
+ public static int PROTECTION_FLAG_PRIVILEGED;
+ public static int PROTECTION_FLAG_SYSTEM;
+ public static int PROTECTION_FLAG_VERIFIER;
+ public static int PROTECTION_MASK_BASE;
+ public static int PROTECTION_MASK_FLAGS;
+ public static int PROTECTION_NORMAL;
+ public static int PROTECTION_SIGNATURE;
+ public static int PROTECTION_SIGNATURE_OR_SYSTEM;
+ public int descriptionRes;
+ public int flags;
+ public java.lang.String group;
+ public java.lang.CharSequence nonLocalizedDescription;
+ public int protectionLevel;
+}
+
+-keep class android.content.pm.ProviderInfo {
+ <init>();
+ <init>(android.content.pm.ProviderInfo);
+
+ public int describeContents();
+ public void dump(android.util.Printer, java.lang.String);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_SINGLE_USER;
+ public java.lang.String authority;
+ public int flags;
+ public boolean grantUriPermissions;
+ public int initOrder;
+ public boolean isSyncable;
+ public boolean multiprocess;
+ public android.content.pm.PathPermission[] pathPermissions;
+ public java.lang.String readPermission;
+ public android.os.PatternMatcher[] uriPermissionPatterns;
+ public java.lang.String writePermission;
+}
+
+-keep class android.content.pm.ResolveInfo {
+ <init>();
+ <init>(android.content.pm.ResolveInfo);
+
+ public int describeContents();
+ public void dump(android.util.Printer, java.lang.String);
+ public int getIconResource();
+ public android.graphics.drawable.Drawable loadIcon(android.content.pm.PackageManager);
+ public java.lang.CharSequence loadLabel(android.content.pm.PackageManager);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public android.content.pm.ActivityInfo activityInfo;
+ public android.content.IntentFilter filter;
+ public int icon;
+ public boolean isDefault;
+ public int labelRes;
+ public int match;
+ public java.lang.CharSequence nonLocalizedLabel;
+ public int preferredOrder;
+ public int priority;
+ public android.content.pm.ProviderInfo providerInfo;
+ public java.lang.String resolvePackageName;
+ public android.content.pm.ServiceInfo serviceInfo;
+ public int specificIndex;
+}
+
+-keep class android.content.pm.ServiceInfo {
+ <init>();
+ <init>(android.content.pm.ServiceInfo);
+
+ public int describeContents();
+ public void dump(android.util.Printer, java.lang.String);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_ISOLATED_PROCESS;
+ public static int FLAG_SINGLE_USER;
+ public static int FLAG_STOP_WITH_TASK;
+ public int flags;
+ public java.lang.String permission;
+}
+
+-keep class android.content.pm.Signature {
+ <init>(byte[]);
+ <init>(java.lang.String);
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public byte[] toByteArray();
+ public char[] toChars();
+ public char[] toChars(char[], int[]);
+ public java.lang.String toCharsString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.res.AssetFileDescriptor {
+ <init>(android.os.ParcelFileDescriptor, long, long);
+ <init>(android.os.ParcelFileDescriptor, long, long, android.os.Bundle);
+
+ public void close();
+ public java.io.FileInputStream createInputStream();
+ public java.io.FileOutputStream createOutputStream();
+ public int describeContents();
+ public long getDeclaredLength();
+ public android.os.Bundle getExtras();
+ public java.io.FileDescriptor getFileDescriptor();
+ public long getLength();
+ public android.os.ParcelFileDescriptor getParcelFileDescriptor();
+ public long getStartOffset();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static long UNKNOWN_LENGTH;
+}
+
+-keep class android.content.res.AssetManager {
+
+ public void close();
+ protected void finalize();
+ public java.lang.String[] getLocales();
+ public java.lang.String[] list(java.lang.String);
+ public java.io.InputStream open(java.lang.String);
+ public java.io.InputStream open(java.lang.String, int);
+ public android.content.res.AssetFileDescriptor openFd(java.lang.String);
+ public android.content.res.AssetFileDescriptor openNonAssetFd(java.lang.String);
+ public android.content.res.AssetFileDescriptor openNonAssetFd(int, java.lang.String);
+ public android.content.res.XmlResourceParser openXmlResourceParser(java.lang.String);
+ public android.content.res.XmlResourceParser openXmlResourceParser(int, java.lang.String);
+
+
+ public static int ACCESS_BUFFER;
+ public static int ACCESS_RANDOM;
+ public static int ACCESS_STREAMING;
+ public static int ACCESS_UNKNOWN;
+}
+
+-keep class android.content.res.ColorStateList {
+ <init>(int[][], int[]);
+
+ public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser);
+ public static android.content.res.ColorStateList createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources$Theme);
+ public int describeContents();
+ public int getChangingConfigurations();
+ public int getColorForState(int[], int);
+ public int getDefaultColor();
+ public boolean isOpaque();
+ public boolean isStateful();
+ public java.lang.String toString();
+ public static android.content.res.ColorStateList valueOf(int);
+ public android.content.res.ColorStateList withAlpha(int);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.content.res.Configuration {
+ <init>();
+ <init>(android.content.res.Configuration);
+
+ public int compareTo(android.content.res.Configuration);
+ public int compareTo(java.lang.Object);
+ public int describeContents();
+ public int diff(android.content.res.Configuration);
+ public boolean equals(android.content.res.Configuration);
+ public boolean equals(java.lang.Object);
+ public int getLayoutDirection();
+ public int hashCode();
+ public boolean isLayoutSizeAtLeast(int);
+ public boolean isScreenRound();
+ public static boolean needNewResources(int, int);
+ public void readFromParcel(android.os.Parcel);
+ public void setLayoutDirection(java.util.Locale);
+ public void setLocale(java.util.Locale);
+ public void setTo(android.content.res.Configuration);
+ public void setToDefaults();
+ public java.lang.String toString();
+ public int updateFrom(android.content.res.Configuration);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int DENSITY_DPI_UNDEFINED;
+ public static int HARDKEYBOARDHIDDEN_NO;
+ public static int HARDKEYBOARDHIDDEN_UNDEFINED;
+ public static int HARDKEYBOARDHIDDEN_YES;
+ public static int KEYBOARDHIDDEN_NO;
+ public static int KEYBOARDHIDDEN_UNDEFINED;
+ public static int KEYBOARDHIDDEN_YES;
+ public static int KEYBOARD_12KEY;
+ public static int KEYBOARD_NOKEYS;
+ public static int KEYBOARD_QWERTY;
+ public static int KEYBOARD_UNDEFINED;
+ public static int MNC_ZERO;
+ public static int NAVIGATIONHIDDEN_NO;
+ public static int NAVIGATIONHIDDEN_UNDEFINED;
+ public static int NAVIGATIONHIDDEN_YES;
+ public static int NAVIGATION_DPAD;
+ public static int NAVIGATION_NONAV;
+ public static int NAVIGATION_TRACKBALL;
+ public static int NAVIGATION_UNDEFINED;
+ public static int NAVIGATION_WHEEL;
+ public static int ORIENTATION_LANDSCAPE;
+ public static int ORIENTATION_PORTRAIT;
+ public static int ORIENTATION_SQUARE;
+ public static int ORIENTATION_UNDEFINED;
+ public static int SCREENLAYOUT_LAYOUTDIR_LTR;
+ public static int SCREENLAYOUT_LAYOUTDIR_MASK;
+ public static int SCREENLAYOUT_LAYOUTDIR_RTL;
+ public static int SCREENLAYOUT_LAYOUTDIR_SHIFT;
+ public static int SCREENLAYOUT_LAYOUTDIR_UNDEFINED;
+ public static int SCREENLAYOUT_LONG_MASK;
+ public static int SCREENLAYOUT_LONG_NO;
+ public static int SCREENLAYOUT_LONG_UNDEFINED;
+ public static int SCREENLAYOUT_LONG_YES;
+ public static int SCREENLAYOUT_ROUND_MASK;
+ public static int SCREENLAYOUT_ROUND_NO;
+ public static int SCREENLAYOUT_ROUND_UNDEFINED;
+ public static int SCREENLAYOUT_ROUND_YES;
+ public static int SCREENLAYOUT_SIZE_LARGE;
+ public static int SCREENLAYOUT_SIZE_MASK;
+ public static int SCREENLAYOUT_SIZE_NORMAL;
+ public static int SCREENLAYOUT_SIZE_SMALL;
+ public static int SCREENLAYOUT_SIZE_UNDEFINED;
+ public static int SCREENLAYOUT_SIZE_XLARGE;
+ public static int SCREENLAYOUT_UNDEFINED;
+ public static int SCREEN_HEIGHT_DP_UNDEFINED;
+ public static int SCREEN_WIDTH_DP_UNDEFINED;
+ public static int SMALLEST_SCREEN_WIDTH_DP_UNDEFINED;
+ public static int TOUCHSCREEN_FINGER;
+ public static int TOUCHSCREEN_NOTOUCH;
+ public static int TOUCHSCREEN_STYLUS;
+ public static int TOUCHSCREEN_UNDEFINED;
+ public static int UI_MODE_NIGHT_MASK;
+ public static int UI_MODE_NIGHT_NO;
+ public static int UI_MODE_NIGHT_UNDEFINED;
+ public static int UI_MODE_NIGHT_YES;
+ public static int UI_MODE_TYPE_APPLIANCE;
+ public static int UI_MODE_TYPE_CAR;
+ public static int UI_MODE_TYPE_DESK;
+ public static int UI_MODE_TYPE_MASK;
+ public static int UI_MODE_TYPE_NORMAL;
+ public static int UI_MODE_TYPE_TELEVISION;
+ public static int UI_MODE_TYPE_UNDEFINED;
+ public static int UI_MODE_TYPE_WATCH;
+ public int densityDpi;
+ public float fontScale;
+ public int hardKeyboardHidden;
+ public int keyboard;
+ public int keyboardHidden;
+ public java.util.Locale locale;
+ public int mcc;
+ public int mnc;
+ public int navigation;
+ public int navigationHidden;
+ public int orientation;
+ public int screenHeightDp;
+ public int screenLayout;
+ public int screenWidthDp;
+ public int smallestScreenWidthDp;
+ public int touchscreen;
+ public int uiMode;
+}
+
+-keep class android.content.res.Resources {
+ <init>(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
+
+ public void finishPreloading();
+ public void flushLayoutCache();
+ public android.content.res.XmlResourceParser getAnimation(int);
+ public android.content.res.AssetManager getAssets();
+ public boolean getBoolean(int);
+ public int getColor(int);
+ public int getColor(int, android.content.res.Resources$Theme);
+ public android.content.res.ColorStateList getColorStateList(int);
+ public android.content.res.ColorStateList getColorStateList(int, android.content.res.Resources$Theme);
+ public android.content.res.Configuration getConfiguration();
+ public float getDimension(int);
+ public int getDimensionPixelOffset(int);
+ public int getDimensionPixelSize(int);
+ public android.util.DisplayMetrics getDisplayMetrics();
+ public android.graphics.drawable.Drawable getDrawable(int);
+ public android.graphics.drawable.Drawable getDrawable(int, android.content.res.Resources$Theme);
+ public android.graphics.drawable.Drawable getDrawableForDensity(int, int);
+ public android.graphics.drawable.Drawable getDrawableForDensity(int, int, android.content.res.Resources$Theme);
+ public float getFraction(int, int, int);
+ public int getIdentifier(java.lang.String, java.lang.String, java.lang.String);
+ public int[] getIntArray(int);
+ public int getInteger(int);
+ public android.content.res.XmlResourceParser getLayout(int);
+ public android.graphics.Movie getMovie(int);
+ public java.lang.String getQuantityString(int, int, java.lang.Object[]);
+ public java.lang.String getQuantityString(int, int);
+ public java.lang.CharSequence getQuantityText(int, int);
+ public java.lang.String getResourceEntryName(int);
+ public java.lang.String getResourceName(int);
+ public java.lang.String getResourcePackageName(int);
+ public java.lang.String getResourceTypeName(int);
+ public java.lang.String getString(int);
+ public java.lang.String getString(int, java.lang.Object[]);
+ public java.lang.String[] getStringArray(int);
+ public static android.content.res.Resources getSystem();
+ public java.lang.CharSequence getText(int);
+ public java.lang.CharSequence getText(int, java.lang.CharSequence);
+ public java.lang.CharSequence[] getTextArray(int);
+ public void getValue(int, android.util.TypedValue, boolean);
+ public void getValue(java.lang.String, android.util.TypedValue, boolean);
+ public void getValueForDensity(int, int, android.util.TypedValue, boolean);
+ public android.content.res.XmlResourceParser getXml(int);
+ public android.content.res.Resources$Theme newTheme();
+ public android.content.res.TypedArray obtainAttributes(android.util.AttributeSet, int[]);
+ public android.content.res.TypedArray obtainTypedArray(int);
+ public java.io.InputStream openRawResource(int);
+ public java.io.InputStream openRawResource(int, android.util.TypedValue);
+ public android.content.res.AssetFileDescriptor openRawResourceFd(int);
+ public void parseBundleExtra(java.lang.String, android.util.AttributeSet, android.os.Bundle);
+ public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle);
+ public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
+
+
+}
+
+-keep class android.content.res.Resources$NotFoundException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class android.content.res.Resources$Theme {
+
+ public void applyStyle(int, boolean);
+ public void dump(int, java.lang.String, java.lang.String);
+ protected void finalize();
+ public int getChangingConfigurations();
+ public android.graphics.drawable.Drawable getDrawable(int);
+ public android.content.res.Resources getResources();
+ public android.content.res.TypedArray obtainStyledAttributes(int[]);
+ public android.content.res.TypedArray obtainStyledAttributes(int, int[]);
+ public android.content.res.TypedArray obtainStyledAttributes(android.util.AttributeSet, int[], int, int);
+ public boolean resolveAttribute(int, android.util.TypedValue, boolean);
+ public void setTo(android.content.res.Resources$Theme);
+
+
+}
+
+-keep class android.content.res.TypedArray {
+
+ public boolean getBoolean(int, boolean);
+ public int getChangingConfigurations();
+ public int getColor(int, int);
+ public android.content.res.ColorStateList getColorStateList(int);
+ public float getDimension(int, float);
+ public int getDimensionPixelOffset(int, int);
+ public int getDimensionPixelSize(int, int);
+ public android.graphics.drawable.Drawable getDrawable(int);
+ public float getFloat(int, float);
+ public float getFraction(int, int, int, float);
+ public int getIndex(int);
+ public int getIndexCount();
+ public int getInt(int, int);
+ public int getInteger(int, int);
+ public int getLayoutDimension(int, java.lang.String);
+ public int getLayoutDimension(int, int);
+ public java.lang.String getNonResourceString(int);
+ public java.lang.String getPositionDescription();
+ public int getResourceId(int, int);
+ public android.content.res.Resources getResources();
+ public java.lang.String getString(int);
+ public java.lang.CharSequence getText(int);
+ public java.lang.CharSequence[] getTextArray(int);
+ public int getType(int);
+ public boolean getValue(int, android.util.TypedValue);
+ public boolean hasValue(int);
+ public boolean hasValueOrEmpty(int);
+ public int length();
+ public android.util.TypedValue peekValue(int);
+ public void recycle();
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.content.res.XmlResourceParser {
+
+ public abstract void close();
+
+
+}
+
+-keep class android.database.CharArrayBuffer {
+ <init>(int);
+ <init>(char[]);
+
+
+
+ public char[] data;
+ public int sizeCopied;
+}
+
+-keep class android.database.ContentObserver {
+ <init>(android.os.Handler);
+
+ public boolean deliverSelfNotifications();
+ public void dispatchChange(boolean);
+ public void dispatchChange(boolean, android.net.Uri);
+ public void onChange(boolean);
+ public void onChange(boolean, android.net.Uri);
+
+
+}
+
+-keep class android.database.Cursor {
+
+ public abstract void close();
+ public abstract void copyStringToBuffer(int, android.database.CharArrayBuffer);
+ public abstract void deactivate();
+ public abstract byte[] getBlob(int);
+ public abstract int getColumnCount();
+ public abstract int getColumnIndex(java.lang.String);
+ public abstract int getColumnIndexOrThrow(java.lang.String);
+ public abstract java.lang.String getColumnName(int);
+ public abstract java.lang.String[] getColumnNames();
+ public abstract int getCount();
+ public abstract double getDouble(int);
+ public abstract android.os.Bundle getExtras();
+ public abstract float getFloat(int);
+ public abstract int getInt(int);
+ public abstract long getLong(int);
+ public abstract android.net.Uri getNotificationUri();
+ public abstract int getPosition();
+ public abstract short getShort(int);
+ public abstract java.lang.String getString(int);
+ public abstract int getType(int);
+ public abstract boolean getWantsAllOnMoveCalls();
+ public abstract boolean isAfterLast();
+ public abstract boolean isBeforeFirst();
+ public abstract boolean isClosed();
+ public abstract boolean isFirst();
+ public abstract boolean isLast();
+ public abstract boolean isNull(int);
+ public abstract boolean move(int);
+ public abstract boolean moveToFirst();
+ public abstract boolean moveToLast();
+ public abstract boolean moveToNext();
+ public abstract boolean moveToPosition(int);
+ public abstract boolean moveToPrevious();
+ public abstract void registerContentObserver(android.database.ContentObserver);
+ public abstract void registerDataSetObserver(android.database.DataSetObserver);
+ public abstract boolean requery();
+ public abstract android.os.Bundle respond(android.os.Bundle);
+ public abstract void setExtras(android.os.Bundle);
+ public abstract void setNotificationUri(android.content.ContentResolver, android.net.Uri);
+ public abstract void unregisterContentObserver(android.database.ContentObserver);
+ public abstract void unregisterDataSetObserver(android.database.DataSetObserver);
+
+
+ public static int FIELD_TYPE_BLOB;
+ public static int FIELD_TYPE_FLOAT;
+ public static int FIELD_TYPE_INTEGER;
+ public static int FIELD_TYPE_NULL;
+ public static int FIELD_TYPE_STRING;
+}
+
+-keep class android.database.DataSetObserver {
+ <init>();
+
+ public void onChanged();
+ public void onInvalidated();
+
+
+}
+
+-keep class android.database.DatabaseErrorHandler {
+
+ public abstract void onCorruption(android.database.sqlite.SQLiteDatabase);
+
+
+}
+
+-keep class android.database.SQLException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+
+
+
+}
+
+-keep class android.database.sqlite.SQLiteClosable {
+ <init>();
+
+ public void acquireReference();
+ public void close();
+ protected abstract void onAllReferencesReleased();
+ protected void onAllReferencesReleasedFromContainer();
+ public void releaseReference();
+ public void releaseReferenceFromContainer();
+
+
+}
+
+-keep class android.database.sqlite.SQLiteCursorDriver {
+
+ public abstract void cursorClosed();
+ public abstract void cursorDeactivated();
+ public abstract void cursorRequeried(android.database.Cursor);
+ public abstract android.database.Cursor query(android.database.sqlite.SQLiteDatabase$CursorFactory, java.lang.String[]);
+ public abstract void setBindArguments(java.lang.String[]);
+
+
+}
+
+-keep class android.database.sqlite.SQLiteDatabase {
+
+ public void beginTransaction();
+ public void beginTransactionNonExclusive();
+ public void beginTransactionWithListener(android.database.sqlite.SQLiteTransactionListener);
+ public void beginTransactionWithListenerNonExclusive(android.database.sqlite.SQLiteTransactionListener);
+ public android.database.sqlite.SQLiteStatement compileStatement(java.lang.String);
+ public static android.database.sqlite.SQLiteDatabase create(android.database.sqlite.SQLiteDatabase$CursorFactory);
+ public int delete(java.lang.String, java.lang.String, java.lang.String[]);
+ public static boolean deleteDatabase(java.io.File);
+ public void disableWriteAheadLogging();
+ public boolean enableWriteAheadLogging();
+ public void endTransaction();
+ public void execSQL(java.lang.String);
+ public void execSQL(java.lang.String, java.lang.Object[]);
+ protected void finalize();
+ public static java.lang.String findEditTable(java.lang.String);
+ public java.util.List getAttachedDbs();
+ public long getMaximumSize();
+ public long getPageSize();
+ public java.lang.String getPath();
+ public java.util.Map getSyncedTables();
+ public int getVersion();
+ public boolean inTransaction();
+ public long insert(java.lang.String, java.lang.String, android.content.ContentValues);
+ public long insertOrThrow(java.lang.String, java.lang.String, android.content.ContentValues);
+ public long insertWithOnConflict(java.lang.String, java.lang.String, android.content.ContentValues, int);
+ public boolean isDatabaseIntegrityOk();
+ public boolean isDbLockedByCurrentThread();
+ public boolean isDbLockedByOtherThreads();
+ public boolean isOpen();
+ public boolean isReadOnly();
+ public boolean isWriteAheadLoggingEnabled();
+ public void markTableSyncable(java.lang.String, java.lang.String);
+ public void markTableSyncable(java.lang.String, java.lang.String, java.lang.String);
+ public boolean needUpgrade(int);
+ protected void onAllReferencesReleased();
+ public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory, int);
+ public static android.database.sqlite.SQLiteDatabase openDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory, int, android.database.DatabaseErrorHandler);
+ public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.io.File, android.database.sqlite.SQLiteDatabase$CursorFactory);
+ public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory);
+ public static android.database.sqlite.SQLiteDatabase openOrCreateDatabase(java.lang.String, android.database.sqlite.SQLiteDatabase$CursorFactory, android.database.DatabaseErrorHandler);
+ public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ public android.database.Cursor query(boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
+ public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String);
+ public android.database.Cursor query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ public android.database.Cursor queryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, boolean, java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String, java.lang.String, android.os.CancellationSignal);
+ public android.database.Cursor rawQuery(java.lang.String, java.lang.String[]);
+ public android.database.Cursor rawQuery(java.lang.String, java.lang.String[], android.os.CancellationSignal);
+ public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, java.lang.String, java.lang.String[], java.lang.String);
+ public android.database.Cursor rawQueryWithFactory(android.database.sqlite.SQLiteDatabase$CursorFactory, java.lang.String, java.lang.String[], java.lang.String, android.os.CancellationSignal);
+ public static int releaseMemory();
+ public long replace(java.lang.String, java.lang.String, android.content.ContentValues);
+ public long replaceOrThrow(java.lang.String, java.lang.String, android.content.ContentValues);
+ public void setForeignKeyConstraintsEnabled(boolean);
+ public void setLocale(java.util.Locale);
+ public void setLockingEnabled(boolean);
+ public void setMaxSqlCacheSize(int);
+ public long setMaximumSize(long);
+ public void setPageSize(long);
+ public void setTransactionSuccessful();
+ public void setVersion(int);
+ public java.lang.String toString();
+ public int update(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[]);
+ public int updateWithOnConflict(java.lang.String, android.content.ContentValues, java.lang.String, java.lang.String[], int);
+ public boolean yieldIfContended();
+ public boolean yieldIfContendedSafely();
+ public boolean yieldIfContendedSafely(long);
+
+
+ public static int CONFLICT_ABORT;
+ public static int CONFLICT_FAIL;
+ public static int CONFLICT_IGNORE;
+ public static int CONFLICT_NONE;
+ public static int CONFLICT_REPLACE;
+ public static int CONFLICT_ROLLBACK;
+ public static int CREATE_IF_NECESSARY;
+ public static int ENABLE_WRITE_AHEAD_LOGGING;
+ public static int MAX_SQL_CACHE_SIZE;
+ public static int NO_LOCALIZED_COLLATORS;
+ public static int OPEN_READONLY;
+ public static int OPEN_READWRITE;
+ public static int SQLITE_MAX_LIKE_PATTERN_LENGTH;
+}
+
+-keep class android.database.sqlite.SQLiteDatabase$CursorFactory {
+
+ public abstract android.database.Cursor newCursor(android.database.sqlite.SQLiteDatabase, android.database.sqlite.SQLiteCursorDriver, java.lang.String, android.database.sqlite.SQLiteQuery);
+
+
+}
+
+-keep class android.database.sqlite.SQLiteProgram {
+
+ public void bindAllArgsAsStrings(java.lang.String[]);
+ public void bindBlob(int, byte[]);
+ public void bindDouble(int, double);
+ public void bindLong(int, long);
+ public void bindNull(int);
+ public void bindString(int, java.lang.String);
+ public void clearBindings();
+ public int getUniqueId();
+ protected void onAllReferencesReleased();
+
+
+}
+
+-keep class android.database.sqlite.SQLiteQuery {
+
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.database.sqlite.SQLiteStatement {
+
+ public void execute();
+ public long executeInsert();
+ public int executeUpdateDelete();
+ public android.os.ParcelFileDescriptor simpleQueryForBlobFileDescriptor();
+ public long simpleQueryForLong();
+ public java.lang.String simpleQueryForString();
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.database.sqlite.SQLiteTransactionListener {
+
+ public abstract void onBegin();
+ public abstract void onCommit();
+ public abstract void onRollback();
+
+
+}
+
+-keep class android.graphics.Bitmap {
+
+ public boolean compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream);
+ public android.graphics.Bitmap copy(android.graphics.Bitmap$Config, boolean);
+ public void copyPixelsFromBuffer(java.nio.Buffer);
+ public void copyPixelsToBuffer(java.nio.Buffer);
+ public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap);
+ public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int);
+ public static android.graphics.Bitmap createBitmap(android.graphics.Bitmap, int, int, int, int, android.graphics.Matrix, boolean);
+ public static android.graphics.Bitmap createBitmap(int, int, android.graphics.Bitmap$Config);
+ public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int, int, android.graphics.Bitmap$Config);
+ public static android.graphics.Bitmap createBitmap(int[], int, int, int, int, android.graphics.Bitmap$Config);
+ public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, int, int, android.graphics.Bitmap$Config);
+ public static android.graphics.Bitmap createBitmap(int[], int, int, android.graphics.Bitmap$Config);
+ public static android.graphics.Bitmap createBitmap(android.util.DisplayMetrics, int[], int, int, android.graphics.Bitmap$Config);
+ public static android.graphics.Bitmap createScaledBitmap(android.graphics.Bitmap, int, int, boolean);
+ public int describeContents();
+ public void eraseColor(int);
+ public android.graphics.Bitmap extractAlpha();
+ public android.graphics.Bitmap extractAlpha(android.graphics.Paint, int[]);
+ public int getAllocationByteCount();
+ public int getByteCount();
+ public android.graphics.Bitmap$Config getConfig();
+ public int getDensity();
+ public int getGenerationId();
+ public int getHeight();
+ public byte[] getNinePatchChunk();
+ public int getPixel(int, int);
+ public void getPixels(int[], int, int, int, int, int, int);
+ public int getRowBytes();
+ public int getScaledHeight(android.graphics.Canvas);
+ public int getScaledHeight(android.util.DisplayMetrics);
+ public int getScaledHeight(int);
+ public int getScaledWidth(android.graphics.Canvas);
+ public int getScaledWidth(android.util.DisplayMetrics);
+ public int getScaledWidth(int);
+ public int getWidth();
+ public boolean hasAlpha();
+ public boolean hasMipMap();
+ public boolean isMutable();
+ public boolean isPremultiplied();
+ public boolean isRecycled();
+ public void prepareToDraw();
+ public void reconfigure(int, int, android.graphics.Bitmap$Config);
+ public void recycle();
+ public boolean sameAs(android.graphics.Bitmap);
+ public void setConfig(android.graphics.Bitmap$Config);
+ public void setDensity(int);
+ public void setHasAlpha(boolean);
+ public void setHasMipMap(boolean);
+ public void setHeight(int);
+ public void setPixel(int, int, int);
+ public void setPixels(int[], int, int, int, int, int, int);
+ public void setPremultiplied(boolean);
+ public void setWidth(int);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int DENSITY_NONE;
+}
+
+-keep class android.graphics.Bitmap$CompressFormat {
+
+ public static android.graphics.Bitmap$CompressFormat valueOf(java.lang.String);
+ public static android.graphics.Bitmap$CompressFormat[] values();
+
+ public static android.graphics.Bitmap$CompressFormat JPEG;
+ public static android.graphics.Bitmap$CompressFormat PNG;
+ public static android.graphics.Bitmap$CompressFormat WEBP;
+
+}
+
+-keep class android.graphics.Bitmap$Config {
+
+ public static android.graphics.Bitmap$Config valueOf(java.lang.String);
+ public static android.graphics.Bitmap$Config[] values();
+
+ public static android.graphics.Bitmap$Config ALPHA_8;
+ public static android.graphics.Bitmap$Config ARGB_4444;
+ public static android.graphics.Bitmap$Config ARGB_8888;
+ public static android.graphics.Bitmap$Config RGB_565;
+
+}
+
+-keep class android.graphics.BitmapFactory {
+ <init>();
+
+ public static android.graphics.Bitmap decodeByteArray(byte[], int, int, android.graphics.BitmapFactory$Options);
+ public static android.graphics.Bitmap decodeByteArray(byte[], int, int);
+ public static android.graphics.Bitmap decodeFile(java.lang.String, android.graphics.BitmapFactory$Options);
+ public static android.graphics.Bitmap decodeFile(java.lang.String);
+ public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor, android.graphics.Rect, android.graphics.BitmapFactory$Options);
+ public static android.graphics.Bitmap decodeFileDescriptor(java.io.FileDescriptor);
+ public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int, android.graphics.BitmapFactory$Options);
+ public static android.graphics.Bitmap decodeResource(android.content.res.Resources, int);
+ public static android.graphics.Bitmap decodeResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory$Options);
+ public static android.graphics.Bitmap decodeStream(java.io.InputStream, android.graphics.Rect, android.graphics.BitmapFactory$Options);
+ public static android.graphics.Bitmap decodeStream(java.io.InputStream);
+
+
+}
+
+-keep class android.graphics.BitmapFactory$Options {
+ <init>();
+
+ public void requestCancelDecode();
+
+
+ public android.graphics.Bitmap inBitmap;
+ public int inDensity;
+ public boolean inDither;
+ public boolean inInputShareable;
+ public boolean inJustDecodeBounds;
+ public boolean inMutable;
+ public boolean inPreferQualityOverSpeed;
+ public android.graphics.Bitmap$Config inPreferredConfig;
+ public boolean inPremultiplied;
+ public boolean inPurgeable;
+ public int inSampleSize;
+ public boolean inScaled;
+ public int inScreenDensity;
+ public int inTargetDensity;
+ public byte[] inTempStorage;
+ public boolean mCancel;
+ public int outHeight;
+ public java.lang.String outMimeType;
+ public int outWidth;
+}
+
+-keep class android.graphics.Canvas {
+ <init>();
+ <init>(android.graphics.Bitmap);
+
+ public boolean clipPath(android.graphics.Path, android.graphics.Region$Op);
+ public boolean clipPath(android.graphics.Path);
+ public boolean clipRect(android.graphics.RectF, android.graphics.Region$Op);
+ public boolean clipRect(android.graphics.Rect, android.graphics.Region$Op);
+ public boolean clipRect(android.graphics.RectF);
+ public boolean clipRect(android.graphics.Rect);
+ public boolean clipRect(float, float, float, float, android.graphics.Region$Op);
+ public boolean clipRect(float, float, float, float);
+ public boolean clipRect(int, int, int, int);
+ public boolean clipRegion(android.graphics.Region, android.graphics.Region$Op);
+ public boolean clipRegion(android.graphics.Region);
+ public void concat(android.graphics.Matrix);
+ public void drawARGB(int, int, int, int);
+ public void drawArc(android.graphics.RectF, float, float, boolean, android.graphics.Paint);
+ public void drawArc(float, float, float, float, float, float, boolean, android.graphics.Paint);
+ public void drawBitmap(android.graphics.Bitmap, float, float, android.graphics.Paint);
+ public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.RectF, android.graphics.Paint);
+ public void drawBitmap(android.graphics.Bitmap, android.graphics.Rect, android.graphics.Rect, android.graphics.Paint);
+ public void drawBitmap(int[], int, int, float, float, int, int, boolean, android.graphics.Paint);
+ public void drawBitmap(int[], int, int, int, int, int, int, boolean, android.graphics.Paint);
+ public void drawBitmap(android.graphics.Bitmap, android.graphics.Matrix, android.graphics.Paint);
+ public void drawBitmapMesh(android.graphics.Bitmap, int, int, float[], int, int[], int, android.graphics.Paint);
+ public void drawCircle(float, float, float, android.graphics.Paint);
+ public void drawColor(int);
+ public void drawColor(int, android.graphics.PorterDuff$Mode);
+ public void drawLine(float, float, float, float, android.graphics.Paint);
+ public void drawLines(float[], int, int, android.graphics.Paint);
+ public void drawLines(float[], android.graphics.Paint);
+ public void drawOval(android.graphics.RectF, android.graphics.Paint);
+ public void drawOval(float, float, float, float, android.graphics.Paint);
+ public void drawPaint(android.graphics.Paint);
+ public void drawPath(android.graphics.Path, android.graphics.Paint);
+ public void drawPicture(android.graphics.Picture);
+ public void drawPicture(android.graphics.Picture, android.graphics.RectF);
+ public void drawPicture(android.graphics.Picture, android.graphics.Rect);
+ public void drawPoint(float, float, android.graphics.Paint);
+ public void drawPoints(float[], int, int, android.graphics.Paint);
+ public void drawPoints(float[], android.graphics.Paint);
+ public void drawPosText(char[], int, int, float[], android.graphics.Paint);
+ public void drawPosText(java.lang.String, float[], android.graphics.Paint);
+ public void drawRGB(int, int, int);
+ public void drawRect(android.graphics.RectF, android.graphics.Paint);
+ public void drawRect(android.graphics.Rect, android.graphics.Paint);
+ public void drawRect(float, float, float, float, android.graphics.Paint);
+ public void drawRoundRect(android.graphics.RectF, float, float, android.graphics.Paint);
+ public void drawRoundRect(float, float, float, float, float, float, android.graphics.Paint);
+ public void drawText(char[], int, int, float, float, android.graphics.Paint);
+ public void drawText(java.lang.String, float, float, android.graphics.Paint);
+ public void drawText(java.lang.String, int, int, float, float, android.graphics.Paint);
+ public void drawText(java.lang.CharSequence, int, int, float, float, android.graphics.Paint);
+ public void drawTextOnPath(char[], int, int, android.graphics.Path, float, float, android.graphics.Paint);
+ public void drawTextOnPath(java.lang.String, android.graphics.Path, float, float, android.graphics.Paint);
+ public void drawTextRun(char[], int, int, int, int, float, float, boolean, android.graphics.Paint);
+ public void drawTextRun(java.lang.CharSequence, int, int, int, int, float, float, boolean, android.graphics.Paint);
+ public void drawVertices(android.graphics.Canvas$VertexMode, int, float[], int, float[], int, int[], int, short[], int, int, android.graphics.Paint);
+ public boolean getClipBounds(android.graphics.Rect);
+ public android.graphics.Rect getClipBounds();
+ public int getDensity();
+ public android.graphics.DrawFilter getDrawFilter();
+ public int getHeight();
+ public void getMatrix(android.graphics.Matrix);
+ public android.graphics.Matrix getMatrix();
+ public int getMaximumBitmapHeight();
+ public int getMaximumBitmapWidth();
+ public int getSaveCount();
+ public int getWidth();
+ public boolean isHardwareAccelerated();
+ public boolean isOpaque();
+ public boolean quickReject(android.graphics.RectF, android.graphics.Canvas$EdgeType);
+ public boolean quickReject(android.graphics.Path, android.graphics.Canvas$EdgeType);
+ public boolean quickReject(float, float, float, float, android.graphics.Canvas$EdgeType);
+ public void restore();
+ public void restoreToCount(int);
+ public void rotate(float);
+ public void rotate(float, float, float);
+ public int save();
+ public int save(int);
+ public int saveLayer(android.graphics.RectF, android.graphics.Paint, int);
+ public int saveLayer(android.graphics.RectF, android.graphics.Paint);
+ public int saveLayer(float, float, float, float, android.graphics.Paint, int);
+ public int saveLayer(float, float, float, float, android.graphics.Paint);
+ public int saveLayerAlpha(android.graphics.RectF, int, int);
+ public int saveLayerAlpha(android.graphics.RectF, int);
+ public int saveLayerAlpha(float, float, float, float, int, int);
+ public int saveLayerAlpha(float, float, float, float, int);
+ public void scale(float, float);
+ public void scale(float, float, float, float);
+ public void setBitmap(android.graphics.Bitmap);
+ public void setDensity(int);
+ public void setDrawFilter(android.graphics.DrawFilter);
+ public void setMatrix(android.graphics.Matrix);
+ public void skew(float, float);
+ public void translate(float, float);
+
+
+ public static int ALL_SAVE_FLAG;
+ public static int CLIP_SAVE_FLAG;
+ public static int CLIP_TO_LAYER_SAVE_FLAG;
+ public static int FULL_COLOR_LAYER_SAVE_FLAG;
+ public static int HAS_ALPHA_LAYER_SAVE_FLAG;
+ public static int MATRIX_SAVE_FLAG;
+}
+
+-keep class android.graphics.Canvas$EdgeType {
+
+ public static android.graphics.Canvas$EdgeType valueOf(java.lang.String);
+ public static android.graphics.Canvas$EdgeType[] values();
+
+ public static android.graphics.Canvas$EdgeType AA;
+ public static android.graphics.Canvas$EdgeType BW;
+
+}
+
+-keep class android.graphics.Canvas$VertexMode {
+
+ public static android.graphics.Canvas$VertexMode valueOf(java.lang.String);
+ public static android.graphics.Canvas$VertexMode[] values();
+
+ public static android.graphics.Canvas$VertexMode TRIANGLES;
+ public static android.graphics.Canvas$VertexMode TRIANGLE_FAN;
+ public static android.graphics.Canvas$VertexMode TRIANGLE_STRIP;
+
+}
+
+-keep class android.graphics.ColorFilter {
+ <init>();
+
+ protected void finalize();
+
+
+}
+
+-keep class android.graphics.DrawFilter {
+ <init>();
+
+ protected void finalize();
+
+
+}
+
+-keep class android.graphics.MaskFilter {
+ <init>();
+
+ protected void finalize();
+
+
+}
+
+-keep class android.graphics.Matrix {
+ <init>();
+ <init>(android.graphics.Matrix);
+
+ public boolean equals(java.lang.Object);
+ protected void finalize();
+ public void getValues(float[]);
+ public int hashCode();
+ public boolean invert(android.graphics.Matrix);
+ public boolean isAffine();
+ public boolean isIdentity();
+ public void mapPoints(float[], int, float[], int, int);
+ public void mapPoints(float[], float[]);
+ public void mapPoints(float[]);
+ public float mapRadius(float);
+ public boolean mapRect(android.graphics.RectF, android.graphics.RectF);
+ public boolean mapRect(android.graphics.RectF);
+ public void mapVectors(float[], int, float[], int, int);
+ public void mapVectors(float[], float[]);
+ public void mapVectors(float[]);
+ public boolean postConcat(android.graphics.Matrix);
+ public boolean postRotate(float, float, float);
+ public boolean postRotate(float);
+ public boolean postScale(float, float, float, float);
+ public boolean postScale(float, float);
+ public boolean postSkew(float, float, float, float);
+ public boolean postSkew(float, float);
+ public boolean postTranslate(float, float);
+ public boolean preConcat(android.graphics.Matrix);
+ public boolean preRotate(float, float, float);
+ public boolean preRotate(float);
+ public boolean preScale(float, float, float, float);
+ public boolean preScale(float, float);
+ public boolean preSkew(float, float, float, float);
+ public boolean preSkew(float, float);
+ public boolean preTranslate(float, float);
+ public boolean rectStaysRect();
+ public void reset();
+ public void set(android.graphics.Matrix);
+ public boolean setConcat(android.graphics.Matrix, android.graphics.Matrix);
+ public boolean setPolyToPoly(float[], int, float[], int, int);
+ public boolean setRectToRect(android.graphics.RectF, android.graphics.RectF, android.graphics.Matrix$ScaleToFit);
+ public void setRotate(float, float, float);
+ public void setRotate(float);
+ public void setScale(float, float, float, float);
+ public void setScale(float, float);
+ public void setSinCos(float, float, float, float);
+ public void setSinCos(float, float);
+ public void setSkew(float, float, float, float);
+ public void setSkew(float, float);
+ public void setTranslate(float, float);
+ public void setValues(float[]);
+ public java.lang.String toShortString();
+ public java.lang.String toString();
+
+
+ public static int MPERSP_0;
+ public static int MPERSP_1;
+ public static int MPERSP_2;
+ public static int MSCALE_X;
+ public static int MSCALE_Y;
+ public static int MSKEW_X;
+ public static int MSKEW_Y;
+ public static int MTRANS_X;
+ public static int MTRANS_Y;
+}
+
+-keep class android.graphics.Matrix$ScaleToFit {
+
+ public static android.graphics.Matrix$ScaleToFit valueOf(java.lang.String);
+ public static android.graphics.Matrix$ScaleToFit[] values();
+
+ public static android.graphics.Matrix$ScaleToFit CENTER;
+ public static android.graphics.Matrix$ScaleToFit END;
+ public static android.graphics.Matrix$ScaleToFit FILL;
+ public static android.graphics.Matrix$ScaleToFit START;
+
+}
+
+-keep class android.graphics.Movie {
+
+ public static android.graphics.Movie decodeByteArray(byte[], int, int);
+ public static android.graphics.Movie decodeFile(java.lang.String);
+ public static android.graphics.Movie decodeStream(java.io.InputStream);
+ public void draw(android.graphics.Canvas, float, float, android.graphics.Paint);
+ public void draw(android.graphics.Canvas, float, float);
+ public int duration();
+ protected void finalize();
+ public int height();
+ public boolean isOpaque();
+ public boolean setTime(int);
+ public int width();
+
+
+}
+
+-keep class android.graphics.Outline {
+ <init>();
+ <init>(android.graphics.Outline);
+
+ public boolean canClip();
+ public float getAlpha();
+ public boolean isEmpty();
+ public void offset(int, int);
+ public void set(android.graphics.Outline);
+ public void setAlpha(float);
+ public void setConvexPath(android.graphics.Path);
+ public void setEmpty();
+ public void setOval(int, int, int, int);
+ public void setOval(android.graphics.Rect);
+ public void setRect(int, int, int, int);
+ public void setRect(android.graphics.Rect);
+ public void setRoundRect(int, int, int, int, float);
+ public void setRoundRect(android.graphics.Rect, float);
+
+
+}
+
+-keep class android.graphics.Paint {
+ <init>();
+ <init>(int);
+ <init>(android.graphics.Paint);
+
+ public float ascent();
+ public int breakText(char[], int, int, float, float[]);
+ public int breakText(java.lang.CharSequence, int, int, boolean, float, float[]);
+ public int breakText(java.lang.String, boolean, float, float[]);
+ public void clearShadowLayer();
+ public float descent();
+ protected void finalize();
+ public int getAlpha();
+ public int getColor();
+ public android.graphics.ColorFilter getColorFilter();
+ public boolean getFillPath(android.graphics.Path, android.graphics.Path);
+ public int getFlags();
+ public java.lang.String getFontFeatureSettings();
+ public float getFontMetrics(android.graphics.Paint$FontMetrics);
+ public android.graphics.Paint$FontMetrics getFontMetrics();
+ public int getFontMetricsInt(android.graphics.Paint$FontMetricsInt);
+ public android.graphics.Paint$FontMetricsInt getFontMetricsInt();
+ public float getFontSpacing();
+ public int getHinting();
+ public float getLetterSpacing();
+ public android.graphics.MaskFilter getMaskFilter();
+ public int getOffsetForAdvance(char[], int, int, int, int, boolean, float);
+ public int getOffsetForAdvance(java.lang.CharSequence, int, int, int, int, boolean, float);
+ public android.graphics.PathEffect getPathEffect();
+ public android.graphics.Rasterizer getRasterizer();
+ public float getRunAdvance(char[], int, int, int, int, boolean, int);
+ public float getRunAdvance(java.lang.CharSequence, int, int, int, int, boolean, int);
+ public android.graphics.Shader getShader();
+ public android.graphics.Paint$Cap getStrokeCap();
+ public android.graphics.Paint$Join getStrokeJoin();
+ public float getStrokeMiter();
+ public float getStrokeWidth();
+ public android.graphics.Paint$Style getStyle();
+ public android.graphics.Paint$Align getTextAlign();
+ public void getTextBounds(java.lang.String, int, int, android.graphics.Rect);
+ public void getTextBounds(char[], int, int, android.graphics.Rect);
+ public java.util.Locale getTextLocale();
+ public void getTextPath(char[], int, int, float, float, android.graphics.Path);
+ public void getTextPath(java.lang.String, int, int, float, float, android.graphics.Path);
+ public float getTextScaleX();
+ public float getTextSize();
+ public float getTextSkewX();
+ public int getTextWidths(char[], int, int, float[]);
+ public int getTextWidths(java.lang.CharSequence, int, int, float[]);
+ public int getTextWidths(java.lang.String, int, int, float[]);
+ public int getTextWidths(java.lang.String, float[]);
+ public android.graphics.Typeface getTypeface();
+ public android.graphics.Xfermode getXfermode();
+ public boolean hasGlyph(java.lang.String);
+ public boolean isAntiAlias();
+ public boolean isDither();
+ public boolean isElegantTextHeight();
+ public boolean isFakeBoldText();
+ public boolean isFilterBitmap();
+ public boolean isLinearText();
+ public boolean isStrikeThruText();
+ public boolean isSubpixelText();
+ public boolean isUnderlineText();
+ public float measureText(char[], int, int);
+ public float measureText(java.lang.String, int, int);
+ public float measureText(java.lang.String);
+ public float measureText(java.lang.CharSequence, int, int);
+ public void reset();
+ public void set(android.graphics.Paint);
+ public void setARGB(int, int, int, int);
+ public void setAlpha(int);
+ public void setAntiAlias(boolean);
+ public void setColor(int);
+ public android.graphics.ColorFilter setColorFilter(android.graphics.ColorFilter);
+ public void setDither(boolean);
+ public void setElegantTextHeight(boolean);
+ public void setFakeBoldText(boolean);
+ public void setFilterBitmap(boolean);
+ public void setFlags(int);
+ public void setFontFeatureSettings(java.lang.String);
+ public void setHinting(int);
+ public void setLetterSpacing(float);
+ public void setLinearText(boolean);
+ public android.graphics.MaskFilter setMaskFilter(android.graphics.MaskFilter);
+ public android.graphics.PathEffect setPathEffect(android.graphics.PathEffect);
+ public android.graphics.Rasterizer setRasterizer(android.graphics.Rasterizer);
+ public android.graphics.Shader setShader(android.graphics.Shader);
+ public void setShadowLayer(float, float, float, int);
+ public void setStrikeThruText(boolean);
+ public void setStrokeCap(android.graphics.Paint$Cap);
+ public void setStrokeJoin(android.graphics.Paint$Join);
+ public void setStrokeMiter(float);
+ public void setStrokeWidth(float);
+ public void setStyle(android.graphics.Paint$Style);
+ public void setSubpixelText(boolean);
+ public void setTextAlign(android.graphics.Paint$Align);
+ public void setTextLocale(java.util.Locale);
+ public void setTextScaleX(float);
+ public void setTextSize(float);
+ public void setTextSkewX(float);
+ public android.graphics.Typeface setTypeface(android.graphics.Typeface);
+ public void setUnderlineText(boolean);
+ public android.graphics.Xfermode setXfermode(android.graphics.Xfermode);
+
+
+ public static int ANTI_ALIAS_FLAG;
+ public static int DEV_KERN_TEXT_FLAG;
+ public static int DITHER_FLAG;
+ public static int EMBEDDED_BITMAP_TEXT_FLAG;
+ public static int FAKE_BOLD_TEXT_FLAG;
+ public static int FILTER_BITMAP_FLAG;
+ public static int HINTING_OFF;
+ public static int HINTING_ON;
+ public static int LINEAR_TEXT_FLAG;
+ public static int STRIKE_THRU_TEXT_FLAG;
+ public static int SUBPIXEL_TEXT_FLAG;
+ public static int UNDERLINE_TEXT_FLAG;
+}
+
+-keep class android.graphics.Paint$Align {
+
+ public static android.graphics.Paint$Align valueOf(java.lang.String);
+ public static android.graphics.Paint$Align[] values();
+
+ public static android.graphics.Paint$Align CENTER;
+ public static android.graphics.Paint$Align LEFT;
+ public static android.graphics.Paint$Align RIGHT;
+
+}
+
+-keep class android.graphics.Paint$Cap {
+
+ public static android.graphics.Paint$Cap valueOf(java.lang.String);
+ public static android.graphics.Paint$Cap[] values();
+
+ public static android.graphics.Paint$Cap BUTT;
+ public static android.graphics.Paint$Cap ROUND;
+ public static android.graphics.Paint$Cap SQUARE;
+
+}
+
+-keep class android.graphics.Paint$FontMetrics {
+ <init>();
+
+
+
+ public float ascent;
+ public float bottom;
+ public float descent;
+ public float leading;
+ public float top;
+}
+
+-keep class android.graphics.Paint$FontMetricsInt {
+ <init>();
+
+ public java.lang.String toString();
+
+
+ public int ascent;
+ public int bottom;
+ public int descent;
+ public int leading;
+ public int top;
+}
+
+-keep class android.graphics.Paint$Join {
+
+ public static android.graphics.Paint$Join valueOf(java.lang.String);
+ public static android.graphics.Paint$Join[] values();
+
+ public static android.graphics.Paint$Join BEVEL;
+ public static android.graphics.Paint$Join MITER;
+ public static android.graphics.Paint$Join ROUND;
+
+}
+
+-keep class android.graphics.Paint$Style {
+
+ public static android.graphics.Paint$Style valueOf(java.lang.String);
+ public static android.graphics.Paint$Style[] values();
+
+ public static android.graphics.Paint$Style FILL;
+ public static android.graphics.Paint$Style FILL_AND_STROKE;
+ public static android.graphics.Paint$Style STROKE;
+
+}
+
+-keep class android.graphics.Path {
+ <init>();
+ <init>(android.graphics.Path);
+
+ public void addArc(android.graphics.RectF, float, float);
+ public void addArc(float, float, float, float, float, float);
+ public void addCircle(float, float, float, android.graphics.Path$Direction);
+ public void addOval(android.graphics.RectF, android.graphics.Path$Direction);
+ public void addOval(float, float, float, float, android.graphics.Path$Direction);
+ public void addPath(android.graphics.Path, float, float);
+ public void addPath(android.graphics.Path);
+ public void addPath(android.graphics.Path, android.graphics.Matrix);
+ public void addRect(android.graphics.RectF, android.graphics.Path$Direction);
+ public void addRect(float, float, float, float, android.graphics.Path$Direction);
+ public void addRoundRect(android.graphics.RectF, float, float, android.graphics.Path$Direction);
+ public void addRoundRect(float, float, float, float, float, float, android.graphics.Path$Direction);
+ public void addRoundRect(android.graphics.RectF, float[], android.graphics.Path$Direction);
+ public void addRoundRect(float, float, float, float, float[], android.graphics.Path$Direction);
+ public void arcTo(android.graphics.RectF, float, float, boolean);
+ public void arcTo(android.graphics.RectF, float, float);
+ public void arcTo(float, float, float, float, float, float, boolean);
+ public void close();
+ public void computeBounds(android.graphics.RectF, boolean);
+ public void cubicTo(float, float, float, float, float, float);
+ protected void finalize();
+ public android.graphics.Path$FillType getFillType();
+ public void incReserve(int);
+ public boolean isConvex();
+ public boolean isEmpty();
+ public boolean isInverseFillType();
+ public boolean isRect(android.graphics.RectF);
+ public void lineTo(float, float);
+ public void moveTo(float, float);
+ public void offset(float, float, android.graphics.Path);
+ public void offset(float, float);
+ public boolean op(android.graphics.Path, android.graphics.Path$Op);
+ public boolean op(android.graphics.Path, android.graphics.Path, android.graphics.Path$Op);
+ public void quadTo(float, float, float, float);
+ public void rCubicTo(float, float, float, float, float, float);
+ public void rLineTo(float, float);
+ public void rMoveTo(float, float);
+ public void rQuadTo(float, float, float, float);
+ public void reset();
+ public void rewind();
+ public void set(android.graphics.Path);
+ public void setFillType(android.graphics.Path$FillType);
+ public void setLastPoint(float, float);
+ public void toggleInverseFillType();
+ public void transform(android.graphics.Matrix, android.graphics.Path);
+ public void transform(android.graphics.Matrix);
+
+
+}
+
+-keep class android.graphics.Path$Direction {
+
+ public static android.graphics.Path$Direction valueOf(java.lang.String);
+ public static android.graphics.Path$Direction[] values();
+
+ public static android.graphics.Path$Direction CCW;
+ public static android.graphics.Path$Direction CW;
+
+}
+
+-keep class android.graphics.Path$FillType {
+
+ public static android.graphics.Path$FillType valueOf(java.lang.String);
+ public static android.graphics.Path$FillType[] values();
+
+ public static android.graphics.Path$FillType EVEN_ODD;
+ public static android.graphics.Path$FillType INVERSE_EVEN_ODD;
+ public static android.graphics.Path$FillType INVERSE_WINDING;
+ public static android.graphics.Path$FillType WINDING;
+
+}
+
+-keep class android.graphics.Path$Op {
+
+ public static android.graphics.Path$Op valueOf(java.lang.String);
+ public static android.graphics.Path$Op[] values();
+
+ public static android.graphics.Path$Op DIFFERENCE;
+ public static android.graphics.Path$Op INTERSECT;
+ public static android.graphics.Path$Op REVERSE_DIFFERENCE;
+ public static android.graphics.Path$Op UNION;
+ public static android.graphics.Path$Op XOR;
+
+}
+
+-keep class android.graphics.PathEffect {
+ <init>();
+
+ protected void finalize();
+
+
+}
+
+-keep class android.graphics.Picture {
+ <init>();
+ <init>(android.graphics.Picture);
+
+ public android.graphics.Canvas beginRecording(int, int);
+ public static android.graphics.Picture createFromStream(java.io.InputStream);
+ public void draw(android.graphics.Canvas);
+ public void endRecording();
+ protected void finalize();
+ public int getHeight();
+ public int getWidth();
+ public void writeToStream(java.io.OutputStream);
+
+
+}
+
+-keep class android.graphics.Point {
+ <init>();
+ <init>(int, int);
+ <init>(android.graphics.Point);
+
+ public int describeContents();
+ public boolean equals(int, int);
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public void negate();
+ public void offset(int, int);
+ public void readFromParcel(android.os.Parcel);
+ public void set(int, int);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public int x;
+ public int y;
+}
+
+-keep class android.graphics.PorterDuff {
+ <init>();
+
+
+
+}
+
+-keep class android.graphics.PorterDuff$Mode {
+
+ public static android.graphics.PorterDuff$Mode valueOf(java.lang.String);
+ public static android.graphics.PorterDuff$Mode[] values();
+
+ public static android.graphics.PorterDuff$Mode ADD;
+ public static android.graphics.PorterDuff$Mode CLEAR;
+ public static android.graphics.PorterDuff$Mode DARKEN;
+ public static android.graphics.PorterDuff$Mode DST;
+ public static android.graphics.PorterDuff$Mode DST_ATOP;
+ public static android.graphics.PorterDuff$Mode DST_IN;
+ public static android.graphics.PorterDuff$Mode DST_OUT;
+ public static android.graphics.PorterDuff$Mode DST_OVER;
+ public static android.graphics.PorterDuff$Mode LIGHTEN;
+ public static android.graphics.PorterDuff$Mode MULTIPLY;
+ public static android.graphics.PorterDuff$Mode OVERLAY;
+ public static android.graphics.PorterDuff$Mode SCREEN;
+ public static android.graphics.PorterDuff$Mode SRC;
+ public static android.graphics.PorterDuff$Mode SRC_ATOP;
+ public static android.graphics.PorterDuff$Mode SRC_IN;
+ public static android.graphics.PorterDuff$Mode SRC_OUT;
+ public static android.graphics.PorterDuff$Mode SRC_OVER;
+ public static android.graphics.PorterDuff$Mode XOR;
+
+}
+
+-keep class android.graphics.Rasterizer {
+ <init>();
+
+ protected void finalize();
+
+
+}
+
+-keep class android.graphics.Rect {
+ <init>();
+ <init>(int, int, int, int);
+ <init>(android.graphics.Rect);
+
+ public int centerX();
+ public int centerY();
+ public boolean contains(int, int);
+ public boolean contains(int, int, int, int);
+ public boolean contains(android.graphics.Rect);
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public float exactCenterX();
+ public float exactCenterY();
+ public java.lang.String flattenToString();
+ public int hashCode();
+ public int height();
+ public void inset(int, int);
+ public boolean intersect(int, int, int, int);
+ public boolean intersect(android.graphics.Rect);
+ public boolean intersects(int, int, int, int);
+ public static boolean intersects(android.graphics.Rect, android.graphics.Rect);
+ public boolean isEmpty();
+ public void offset(int, int);
+ public void offsetTo(int, int);
+ public void readFromParcel(android.os.Parcel);
+ public void set(int, int, int, int);
+ public void set(android.graphics.Rect);
+ public void setEmpty();
+ public boolean setIntersect(android.graphics.Rect, android.graphics.Rect);
+ public void sort();
+ public java.lang.String toShortString();
+ public java.lang.String toString();
+ public static android.graphics.Rect unflattenFromString(java.lang.String);
+ public void union(int, int, int, int);
+ public void union(android.graphics.Rect);
+ public void union(int, int);
+ public int width();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public int bottom;
+ public int left;
+ public int right;
+ public int top;
+}
+
+-keep class android.graphics.RectF {
+ <init>();
+ <init>(float, float, float, float);
+ <init>(android.graphics.RectF);
+ <init>(android.graphics.Rect);
+
+ public float centerX();
+ public float centerY();
+ public boolean contains(float, float);
+ public boolean contains(float, float, float, float);
+ public boolean contains(android.graphics.RectF);
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public float height();
+ public void inset(float, float);
+ public boolean intersect(float, float, float, float);
+ public boolean intersect(android.graphics.RectF);
+ public boolean intersects(float, float, float, float);
+ public static boolean intersects(android.graphics.RectF, android.graphics.RectF);
+ public boolean isEmpty();
+ public void offset(float, float);
+ public void offsetTo(float, float);
+ public void readFromParcel(android.os.Parcel);
+ public void round(android.graphics.Rect);
+ public void roundOut(android.graphics.Rect);
+ public void set(float, float, float, float);
+ public void set(android.graphics.RectF);
+ public void set(android.graphics.Rect);
+ public void setEmpty();
+ public boolean setIntersect(android.graphics.RectF, android.graphics.RectF);
+ public void sort();
+ public java.lang.String toShortString();
+ public java.lang.String toString();
+ public void union(float, float, float, float);
+ public void union(android.graphics.RectF);
+ public void union(float, float);
+ public float width();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public float bottom;
+ public float left;
+ public float right;
+ public float top;
+}
+
+-keep class android.graphics.Region {
+ <init>();
+ <init>(android.graphics.Region);
+ <init>(android.graphics.Rect);
+ <init>(int, int, int, int);
+
+ public boolean contains(int, int);
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ protected void finalize();
+ public android.graphics.Path getBoundaryPath();
+ public boolean getBoundaryPath(android.graphics.Path);
+ public android.graphics.Rect getBounds();
+ public boolean getBounds(android.graphics.Rect);
+ public boolean isComplex();
+ public boolean isEmpty();
+ public boolean isRect();
+ public boolean op(android.graphics.Rect, android.graphics.Region$Op);
+ public boolean op(int, int, int, int, android.graphics.Region$Op);
+ public boolean op(android.graphics.Region, android.graphics.Region$Op);
+ public boolean op(android.graphics.Rect, android.graphics.Region, android.graphics.Region$Op);
+ public boolean op(android.graphics.Region, android.graphics.Region, android.graphics.Region$Op);
+ public boolean quickContains(android.graphics.Rect);
+ public boolean quickContains(int, int, int, int);
+ public boolean quickReject(android.graphics.Rect);
+ public boolean quickReject(int, int, int, int);
+ public boolean quickReject(android.graphics.Region);
+ public boolean set(android.graphics.Region);
+ public boolean set(android.graphics.Rect);
+ public boolean set(int, int, int, int);
+ public void setEmpty();
+ public boolean setPath(android.graphics.Path, android.graphics.Region);
+ public java.lang.String toString();
+ public void translate(int, int);
+ public void translate(int, int, android.graphics.Region);
+ public boolean union(android.graphics.Rect);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.graphics.Region$Op {
+
+ public static android.graphics.Region$Op valueOf(java.lang.String);
+ public static android.graphics.Region$Op[] values();
+
+ public static android.graphics.Region$Op DIFFERENCE;
+ public static android.graphics.Region$Op INTERSECT;
+ public static android.graphics.Region$Op REPLACE;
+ public static android.graphics.Region$Op REVERSE_DIFFERENCE;
+ public static android.graphics.Region$Op UNION;
+ public static android.graphics.Region$Op XOR;
+
+}
+
+-keep class android.graphics.Shader {
+ <init>();
+
+ protected void finalize();
+ public boolean getLocalMatrix(android.graphics.Matrix);
+ public void setLocalMatrix(android.graphics.Matrix);
+
+
+}
+
+-keep class android.graphics.Typeface {
+
+ public static android.graphics.Typeface create(java.lang.String, int);
+ public static android.graphics.Typeface create(android.graphics.Typeface, int);
+ public static android.graphics.Typeface createFromAsset(android.content.res.AssetManager, java.lang.String);
+ public static android.graphics.Typeface createFromFile(java.io.File);
+ public static android.graphics.Typeface createFromFile(java.lang.String);
+ public static android.graphics.Typeface defaultFromStyle(int);
+ public boolean equals(java.lang.Object);
+ protected void finalize();
+ public int getStyle();
+ public int hashCode();
+ public boolean isBold();
+ public boolean isItalic();
+
+
+ public static int BOLD;
+ public static int BOLD_ITALIC;
+ public static android.graphics.Typeface DEFAULT;
+ public static android.graphics.Typeface DEFAULT_BOLD;
+ public static int ITALIC;
+ public static android.graphics.Typeface MONOSPACE;
+ public static int NORMAL;
+ public static android.graphics.Typeface SANS_SERIF;
+ public static android.graphics.Typeface SERIF;
+}
+
+-keep class android.graphics.Xfermode {
+ <init>();
+
+ protected void finalize();
+
+
+}
+
+-keep class android.graphics.drawable.Drawable {
+ <init>();
+
+ public void applyTheme(android.content.res.Resources$Theme);
+ public boolean canApplyTheme();
+ public void clearColorFilter();
+ public void copyBounds(android.graphics.Rect);
+ public android.graphics.Rect copyBounds();
+ public static android.graphics.drawable.Drawable createFromPath(java.lang.String);
+ public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, java.lang.String);
+ public static android.graphics.drawable.Drawable createFromResourceStream(android.content.res.Resources, android.util.TypedValue, java.io.InputStream, java.lang.String, android.graphics.BitmapFactory$Options);
+ public static android.graphics.drawable.Drawable createFromStream(java.io.InputStream, java.lang.String);
+ public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser);
+ public static android.graphics.drawable.Drawable createFromXml(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.content.res.Resources$Theme);
+ public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
+ public static android.graphics.drawable.Drawable createFromXmlInner(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources$Theme);
+ public abstract void draw(android.graphics.Canvas);
+ public int getAlpha();
+ public android.graphics.Rect getBounds();
+ public android.graphics.drawable.Drawable$Callback getCallback();
+ public int getChangingConfigurations();
+ public android.graphics.ColorFilter getColorFilter();
+ public android.graphics.drawable.Drawable$ConstantState getConstantState();
+ public android.graphics.drawable.Drawable getCurrent();
+ public android.graphics.Rect getDirtyBounds();
+ public void getHotspotBounds(android.graphics.Rect);
+ public int getIntrinsicHeight();
+ public int getIntrinsicWidth();
+ public int getLayoutDirection();
+ public int getLevel();
+ public int getMinimumHeight();
+ public int getMinimumWidth();
+ public abstract int getOpacity();
+ public void getOutline(android.graphics.Outline);
+ public boolean getPadding(android.graphics.Rect);
+ public int[] getState();
+ public android.graphics.Region getTransparentRegion();
+ public void inflate(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet);
+ public void inflate(android.content.res.Resources, org.xmlpull.v1.XmlPullParser, android.util.AttributeSet, android.content.res.Resources$Theme);
+ public void invalidateSelf();
+ public boolean isAutoMirrored();
+ public boolean isFilterBitmap();
+ public boolean isStateful();
+ public boolean isVisible();
+ public void jumpToCurrentState();
+ public android.graphics.drawable.Drawable mutate();
+ protected void onBoundsChange(android.graphics.Rect);
+ public boolean onLayoutDirectionChanged(int);
+ protected boolean onLevelChange(int);
+ protected boolean onStateChange(int[]);
+ public static int resolveOpacity(int, int);
+ public void scheduleSelf(java.lang.Runnable, long);
+ public abstract void setAlpha(int);
+ public void setAutoMirrored(boolean);
+ public void setBounds(int, int, int, int);
+ public void setBounds(android.graphics.Rect);
+ public void setCallback(android.graphics.drawable.Drawable$Callback);
+ public void setChangingConfigurations(int);
+ public abstract void setColorFilter(android.graphics.ColorFilter);
+ public void setColorFilter(int, android.graphics.PorterDuff$Mode);
+ public void setDither(boolean);
+ public void setFilterBitmap(boolean);
+ public void setHotspot(float, float);
+ public void setHotspotBounds(int, int, int, int);
+ public boolean setLayoutDirection(int);
+ public boolean setLevel(int);
+ public boolean setState(int[]);
+ public void setTint(int);
+ public void setTintList(android.content.res.ColorStateList);
+ public void setTintMode(android.graphics.PorterDuff$Mode);
+ public boolean setVisible(boolean, boolean);
+ public void unscheduleSelf(java.lang.Runnable);
+
+
+}
+
+-keep class android.graphics.drawable.Drawable$Callback {
+
+ public abstract void invalidateDrawable(android.graphics.drawable.Drawable);
+ public abstract void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
+ public abstract void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
+
+
+}
+
+-keep class android.graphics.drawable.Drawable$ConstantState {
+ <init>();
+
+ public boolean canApplyTheme();
+ public abstract int getChangingConfigurations();
+ public abstract android.graphics.drawable.Drawable newDrawable();
+ public android.graphics.drawable.Drawable newDrawable(android.content.res.Resources);
+ public android.graphics.drawable.Drawable newDrawable(android.content.res.Resources, android.content.res.Resources$Theme);
+
+
+}
+
+-keep class android.media.AudioAttributes {
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public int getContentType();
+ public int getFlags();
+ public int getUsage();
+ public int hashCode();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static int CONTENT_TYPE_MOVIE;
+ public static int CONTENT_TYPE_MUSIC;
+ public static int CONTENT_TYPE_SONIFICATION;
+ public static int CONTENT_TYPE_SPEECH;
+ public static int CONTENT_TYPE_UNKNOWN;
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_AUDIBILITY_ENFORCED;
+ public static int FLAG_HW_AV_SYNC;
+ public static int USAGE_ALARM;
+ public static int USAGE_ASSISTANCE_ACCESSIBILITY;
+ public static int USAGE_ASSISTANCE_NAVIGATION_GUIDANCE;
+ public static int USAGE_ASSISTANCE_SONIFICATION;
+ public static int USAGE_GAME;
+ public static int USAGE_MEDIA;
+ public static int USAGE_NOTIFICATION;
+ public static int USAGE_NOTIFICATION_COMMUNICATION_DELAYED;
+ public static int USAGE_NOTIFICATION_COMMUNICATION_INSTANT;
+ public static int USAGE_NOTIFICATION_COMMUNICATION_REQUEST;
+ public static int USAGE_NOTIFICATION_EVENT;
+ public static int USAGE_NOTIFICATION_RINGTONE;
+ public static int USAGE_UNKNOWN;
+ public static int USAGE_VOICE_COMMUNICATION;
+ public static int USAGE_VOICE_COMMUNICATION_SIGNALLING;
+}
+
+-keep class android.media.AudioDeviceCallback {
+ <init>();
+
+ public void onAudioDevicesAdded(android.media.AudioDeviceInfo[]);
+ public void onAudioDevicesRemoved(android.media.AudioDeviceInfo[]);
+
+
+}
+
+-keep class android.media.AudioDeviceInfo {
+
+ public int[] getChannelCounts();
+ public int[] getChannelIndexMasks();
+ public int[] getChannelMasks();
+ public int[] getEncodings();
+ public int getId();
+ public java.lang.CharSequence getProductName();
+ public int[] getSampleRates();
+ public int getType();
+ public boolean isSink();
+ public boolean isSource();
+
+
+ public static int TYPE_AUX_LINE;
+ public static int TYPE_BLUETOOTH_A2DP;
+ public static int TYPE_BLUETOOTH_SCO;
+ public static int TYPE_BUILTIN_EARPIECE;
+ public static int TYPE_BUILTIN_MIC;
+ public static int TYPE_BUILTIN_SPEAKER;
+ public static int TYPE_DOCK;
+ public static int TYPE_FM;
+ public static int TYPE_FM_TUNER;
+ public static int TYPE_HDMI;
+ public static int TYPE_HDMI_ARC;
+ public static int TYPE_IP;
+ public static int TYPE_LINE_ANALOG;
+ public static int TYPE_LINE_DIGITAL;
+ public static int TYPE_TELEPHONY;
+ public static int TYPE_TV_TUNER;
+ public static int TYPE_UNKNOWN;
+ public static int TYPE_USB_ACCESSORY;
+ public static int TYPE_USB_DEVICE;
+ public static int TYPE_WIRED_HEADPHONES;
+ public static int TYPE_WIRED_HEADSET;
+}
+
+-keep class android.media.AudioFormat {
+
+ public int getChannelCount();
+ public int getChannelIndexMask();
+ public int getChannelMask();
+ public int getEncoding();
+ public int getSampleRate();
+ public java.lang.String toString();
+
+
+ public static int CHANNEL_CONFIGURATION_DEFAULT;
+ public static int CHANNEL_CONFIGURATION_INVALID;
+ public static int CHANNEL_CONFIGURATION_MONO;
+ public static int CHANNEL_CONFIGURATION_STEREO;
+ public static int CHANNEL_INVALID;
+ public static int CHANNEL_IN_BACK;
+ public static int CHANNEL_IN_BACK_PROCESSED;
+ public static int CHANNEL_IN_DEFAULT;
+ public static int CHANNEL_IN_FRONT;
+ public static int CHANNEL_IN_FRONT_PROCESSED;
+ public static int CHANNEL_IN_LEFT;
+ public static int CHANNEL_IN_LEFT_PROCESSED;
+ public static int CHANNEL_IN_MONO;
+ public static int CHANNEL_IN_PRESSURE;
+ public static int CHANNEL_IN_RIGHT;
+ public static int CHANNEL_IN_RIGHT_PROCESSED;
+ public static int CHANNEL_IN_STEREO;
+ public static int CHANNEL_IN_VOICE_DNLINK;
+ public static int CHANNEL_IN_VOICE_UPLINK;
+ public static int CHANNEL_IN_X_AXIS;
+ public static int CHANNEL_IN_Y_AXIS;
+ public static int CHANNEL_IN_Z_AXIS;
+ public static int CHANNEL_OUT_5POINT1;
+ public static int CHANNEL_OUT_7POINT1;
+ public static int CHANNEL_OUT_7POINT1_SURROUND;
+ public static int CHANNEL_OUT_BACK_CENTER;
+ public static int CHANNEL_OUT_BACK_LEFT;
+ public static int CHANNEL_OUT_BACK_RIGHT;
+ public static int CHANNEL_OUT_DEFAULT;
+ public static int CHANNEL_OUT_FRONT_CENTER;
+ public static int CHANNEL_OUT_FRONT_LEFT;
+ public static int CHANNEL_OUT_FRONT_LEFT_OF_CENTER;
+ public static int CHANNEL_OUT_FRONT_RIGHT;
+ public static int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER;
+ public static int CHANNEL_OUT_LOW_FREQUENCY;
+ public static int CHANNEL_OUT_MONO;
+ public static int CHANNEL_OUT_QUAD;
+ public static int CHANNEL_OUT_SIDE_LEFT;
+ public static int CHANNEL_OUT_SIDE_RIGHT;
+ public static int CHANNEL_OUT_STEREO;
+ public static int CHANNEL_OUT_SURROUND;
+ public static int ENCODING_AC3;
+ public static int ENCODING_DEFAULT;
+ public static int ENCODING_DTS;
+ public static int ENCODING_DTS_HD;
+ public static int ENCODING_E_AC3;
+ public static int ENCODING_INVALID;
+ public static int ENCODING_PCM_16BIT;
+ public static int ENCODING_PCM_8BIT;
+ public static int ENCODING_PCM_FLOAT;
+}
+
+-keep class android.media.AudioManager {
+
+ public int abandonAudioFocus(android.media.AudioManager$OnAudioFocusChangeListener);
+ public void adjustStreamVolume(int, int, int);
+ public void adjustSuggestedStreamVolume(int, int, int);
+ public void adjustVolume(int, int);
+ public void dispatchMediaKeyEvent(android.view.KeyEvent);
+ public int generateAudioSessionId();
+ public android.media.AudioDeviceInfo[] getDevices(int);
+ public int getMode();
+ public java.lang.String getParameters(java.lang.String);
+ public java.lang.String getProperty(java.lang.String);
+ public int getRingerMode();
+ public int getRouting(int);
+ public int getStreamMaxVolume(int);
+ public int getStreamVolume(int);
+ public int getVibrateSetting(int);
+ public boolean isBluetoothA2dpOn();
+ public boolean isBluetoothScoAvailableOffCall();
+ public boolean isBluetoothScoOn();
+ public boolean isMicrophoneMute();
+ public boolean isMusicActive();
+ public boolean isSpeakerphoneOn();
+ public boolean isStreamMute(int);
+ public boolean isVolumeFixed();
+ public boolean isWiredHeadsetOn();
+ public void loadSoundEffects();
+ public void playSoundEffect(int);
+ public void playSoundEffect(int, float);
+ public void registerAudioDeviceCallback(android.media.AudioDeviceCallback, android.os.Handler);
+ public void registerMediaButtonEventReceiver(android.content.ComponentName);
+ public void registerMediaButtonEventReceiver(android.app.PendingIntent);
+ public void registerRemoteControlClient(android.media.RemoteControlClient);
+ public boolean registerRemoteController(android.media.RemoteController);
+ public int requestAudioFocus(android.media.AudioManager$OnAudioFocusChangeListener, int, int);
+ public void setBluetoothA2dpOn(boolean);
+ public void setBluetoothScoOn(boolean);
+ public void setMicrophoneMute(boolean);
+ public void setMode(int);
+ public void setParameters(java.lang.String);
+ public void setRingerMode(int);
+ public void setRouting(int, int, int);
+ public void setSpeakerphoneOn(boolean);
+ public void setStreamMute(int, boolean);
+ public void setStreamSolo(int, boolean);
+ public void setStreamVolume(int, int, int);
+ public void setVibrateSetting(int, int);
+ public void setWiredHeadsetOn(boolean);
+ public boolean shouldVibrate(int);
+ public void startBluetoothSco();
+ public void stopBluetoothSco();
+ public void unloadSoundEffects();
+ public void unregisterAudioDeviceCallback(android.media.AudioDeviceCallback);
+ public void unregisterMediaButtonEventReceiver(android.content.ComponentName);
+ public void unregisterMediaButtonEventReceiver(android.app.PendingIntent);
+ public void unregisterRemoteControlClient(android.media.RemoteControlClient);
+ public void unregisterRemoteController(android.media.RemoteController);
+
+
+ public static java.lang.String ACTION_AUDIO_BECOMING_NOISY;
+ public static java.lang.String ACTION_HDMI_AUDIO_PLUG;
+ public static java.lang.String ACTION_HEADSET_PLUG;
+ public static java.lang.String ACTION_SCO_AUDIO_STATE_CHANGED;
+ public static java.lang.String ACTION_SCO_AUDIO_STATE_UPDATED;
+ public static int ADJUST_LOWER;
+ public static int ADJUST_MUTE;
+ public static int ADJUST_RAISE;
+ public static int ADJUST_SAME;
+ public static int ADJUST_TOGGLE_MUTE;
+ public static int ADJUST_UNMUTE;
+ public static int AUDIOFOCUS_GAIN;
+ public static int AUDIOFOCUS_GAIN_TRANSIENT;
+ public static int AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE;
+ public static int AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK;
+ public static int AUDIOFOCUS_LOSS;
+ public static int AUDIOFOCUS_LOSS_TRANSIENT;
+ public static int AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK;
+ public static int AUDIOFOCUS_REQUEST_FAILED;
+ public static int AUDIOFOCUS_REQUEST_GRANTED;
+ public static int AUDIO_SESSION_ID_GENERATE;
+ public static int ERROR;
+ public static int ERROR_DEAD_OBJECT;
+ public static java.lang.String EXTRA_AUDIO_PLUG_STATE;
+ public static java.lang.String EXTRA_ENCODINGS;
+ public static java.lang.String EXTRA_MAX_CHANNEL_COUNT;
+ public static java.lang.String EXTRA_RINGER_MODE;
+ public static java.lang.String EXTRA_SCO_AUDIO_PREVIOUS_STATE;
+ public static java.lang.String EXTRA_SCO_AUDIO_STATE;
+ public static java.lang.String EXTRA_VIBRATE_SETTING;
+ public static java.lang.String EXTRA_VIBRATE_TYPE;
+ public static int FLAG_ALLOW_RINGER_MODES;
+ public static int FLAG_PLAY_SOUND;
+ public static int FLAG_REMOVE_SOUND_AND_VIBRATE;
+ public static int FLAG_SHOW_UI;
+ public static int FLAG_VIBRATE;
+ public static int FX_FOCUS_NAVIGATION_DOWN;
+ public static int FX_FOCUS_NAVIGATION_LEFT;
+ public static int FX_FOCUS_NAVIGATION_RIGHT;
+ public static int FX_FOCUS_NAVIGATION_UP;
+ public static int FX_KEYPRESS_DELETE;
+ public static int FX_KEYPRESS_INVALID;
+ public static int FX_KEYPRESS_RETURN;
+ public static int FX_KEYPRESS_SPACEBAR;
+ public static int FX_KEYPRESS_STANDARD;
+ public static int FX_KEY_CLICK;
+ public static int GET_DEVICES_ALL;
+ public static int GET_DEVICES_INPUTS;
+ public static int GET_DEVICES_OUTPUTS;
+ public static int MODE_CURRENT;
+ public static int MODE_INVALID;
+ public static int MODE_IN_CALL;
+ public static int MODE_IN_COMMUNICATION;
+ public static int MODE_NORMAL;
+ public static int MODE_RINGTONE;
+ public static int NUM_STREAMS;
+ public static java.lang.String PROPERTY_OUTPUT_FRAMES_PER_BUFFER;
+ public static java.lang.String PROPERTY_OUTPUT_SAMPLE_RATE;
+ public static java.lang.String PROPERTY_SUPPORT_MIC_NEAR_ULTRASOUND;
+ public static java.lang.String PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND;
+ public static java.lang.String RINGER_MODE_CHANGED_ACTION;
+ public static int RINGER_MODE_NORMAL;
+ public static int RINGER_MODE_SILENT;
+ public static int RINGER_MODE_VIBRATE;
+ public static int ROUTE_ALL;
+ public static int ROUTE_BLUETOOTH;
+ public static int ROUTE_BLUETOOTH_A2DP;
+ public static int ROUTE_BLUETOOTH_SCO;
+ public static int ROUTE_EARPIECE;
+ public static int ROUTE_HEADSET;
+ public static int ROUTE_SPEAKER;
+ public static int SCO_AUDIO_STATE_CONNECTED;
+ public static int SCO_AUDIO_STATE_CONNECTING;
+ public static int SCO_AUDIO_STATE_DISCONNECTED;
+ public static int SCO_AUDIO_STATE_ERROR;
+ public static int STREAM_ALARM;
+ public static int STREAM_DTMF;
+ public static int STREAM_MUSIC;
+ public static int STREAM_NOTIFICATION;
+ public static int STREAM_RING;
+ public static int STREAM_SYSTEM;
+ public static int STREAM_VOICE_CALL;
+ public static int USE_DEFAULT_STREAM_TYPE;
+ public static java.lang.String VIBRATE_SETTING_CHANGED_ACTION;
+ public static int VIBRATE_SETTING_OFF;
+ public static int VIBRATE_SETTING_ON;
+ public static int VIBRATE_SETTING_ONLY_SILENT;
+ public static int VIBRATE_TYPE_NOTIFICATION;
+ public static int VIBRATE_TYPE_RINGER;
+}
+
+-keep class android.media.AudioManager$OnAudioFocusChangeListener {
+
+ public abstract void onAudioFocusChange(int);
+
+
+}
+
+-keep class android.media.MediaDescription {
+
+ public int describeContents();
+ public java.lang.CharSequence getDescription();
+ public android.os.Bundle getExtras();
+ public android.graphics.Bitmap getIconBitmap();
+ public android.net.Uri getIconUri();
+ public java.lang.String getMediaId();
+ public android.net.Uri getMediaUri();
+ public java.lang.CharSequence getSubtitle();
+ public java.lang.CharSequence getTitle();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.media.MediaMetadata {
+
+ public boolean containsKey(java.lang.String);
+ public int describeContents();
+ public android.graphics.Bitmap getBitmap(java.lang.String);
+ public android.media.MediaDescription getDescription();
+ public long getLong(java.lang.String);
+ public android.media.Rating getRating(java.lang.String);
+ public java.lang.String getString(java.lang.String);
+ public java.lang.CharSequence getText(java.lang.String);
+ public java.util.Set keySet();
+ public int size();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static java.lang.String METADATA_KEY_ALBUM;
+ public static java.lang.String METADATA_KEY_ALBUM_ART;
+ public static java.lang.String METADATA_KEY_ALBUM_ARTIST;
+ public static java.lang.String METADATA_KEY_ALBUM_ART_URI;
+ public static java.lang.String METADATA_KEY_ART;
+ public static java.lang.String METADATA_KEY_ARTIST;
+ public static java.lang.String METADATA_KEY_ART_URI;
+ public static java.lang.String METADATA_KEY_AUTHOR;
+ public static java.lang.String METADATA_KEY_COMPILATION;
+ public static java.lang.String METADATA_KEY_COMPOSER;
+ public static java.lang.String METADATA_KEY_DATE;
+ public static java.lang.String METADATA_KEY_DISC_NUMBER;
+ public static java.lang.String METADATA_KEY_DISPLAY_DESCRIPTION;
+ public static java.lang.String METADATA_KEY_DISPLAY_ICON;
+ public static java.lang.String METADATA_KEY_DISPLAY_ICON_URI;
+ public static java.lang.String METADATA_KEY_DISPLAY_SUBTITLE;
+ public static java.lang.String METADATA_KEY_DISPLAY_TITLE;
+ public static java.lang.String METADATA_KEY_DURATION;
+ public static java.lang.String METADATA_KEY_GENRE;
+ public static java.lang.String METADATA_KEY_MEDIA_ID;
+ public static java.lang.String METADATA_KEY_NUM_TRACKS;
+ public static java.lang.String METADATA_KEY_RATING;
+ public static java.lang.String METADATA_KEY_TITLE;
+ public static java.lang.String METADATA_KEY_TRACK_NUMBER;
+ public static java.lang.String METADATA_KEY_USER_RATING;
+ public static java.lang.String METADATA_KEY_WRITER;
+ public static java.lang.String METADATA_KEY_YEAR;
+}
+
+-keep class android.media.MediaMetadataEditor {
+
+ public synchronized void addEditableKey(int);
+ public abstract void apply();
+ public synchronized void clear();
+ public synchronized android.graphics.Bitmap getBitmap(int, android.graphics.Bitmap);
+ public synchronized int[] getEditableKeys();
+ public synchronized long getLong(int, long);
+ public synchronized java.lang.Object getObject(int, java.lang.Object);
+ public synchronized java.lang.String getString(int, java.lang.String);
+ public synchronized android.media.MediaMetadataEditor putBitmap(int, android.graphics.Bitmap);
+ public synchronized android.media.MediaMetadataEditor putLong(int, long);
+ public synchronized android.media.MediaMetadataEditor putObject(int, java.lang.Object);
+ public synchronized android.media.MediaMetadataEditor putString(int, java.lang.String);
+ public synchronized void removeEditableKeys();
+
+
+ public static int BITMAP_KEY_ARTWORK;
+ public static int RATING_KEY_BY_OTHERS;
+ public static int RATING_KEY_BY_USER;
+}
+
+-keep class android.media.Rating {
+
+ public int describeContents();
+ public float getPercentRating();
+ public int getRatingStyle();
+ public float getStarRating();
+ public boolean hasHeart();
+ public boolean isRated();
+ public boolean isThumbUp();
+ public static android.media.Rating newHeartRating(boolean);
+ public static android.media.Rating newPercentageRating(float);
+ public static android.media.Rating newStarRating(int, float);
+ public static android.media.Rating newThumbRating(boolean);
+ public static android.media.Rating newUnratedRating(int);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int RATING_3_STARS;
+ public static int RATING_4_STARS;
+ public static int RATING_5_STARS;
+ public static int RATING_HEART;
+ public static int RATING_NONE;
+ public static int RATING_PERCENTAGE;
+ public static int RATING_THUMB_UP_DOWN;
+}
+
+-keep class android.media.RemoteControlClient {
+ <init>(android.app.PendingIntent);
+ <init>(android.app.PendingIntent, android.os.Looper);
+
+ public android.media.RemoteControlClient$MetadataEditor editMetadata(boolean);
+ public android.media.session.MediaSession getMediaSession();
+ public void setMetadataUpdateListener(android.media.RemoteControlClient$OnMetadataUpdateListener);
+ public void setOnGetPlaybackPositionListener(android.media.RemoteControlClient$OnGetPlaybackPositionListener);
+ public void setPlaybackPositionUpdateListener(android.media.RemoteControlClient$OnPlaybackPositionUpdateListener);
+ public void setPlaybackState(int);
+ public void setPlaybackState(int, long, float);
+ public void setTransportControlFlags(int);
+
+
+ public static int FLAG_KEY_MEDIA_FAST_FORWARD;
+ public static int FLAG_KEY_MEDIA_NEXT;
+ public static int FLAG_KEY_MEDIA_PAUSE;
+ public static int FLAG_KEY_MEDIA_PLAY;
+ public static int FLAG_KEY_MEDIA_PLAY_PAUSE;
+ public static int FLAG_KEY_MEDIA_POSITION_UPDATE;
+ public static int FLAG_KEY_MEDIA_PREVIOUS;
+ public static int FLAG_KEY_MEDIA_RATING;
+ public static int FLAG_KEY_MEDIA_REWIND;
+ public static int FLAG_KEY_MEDIA_STOP;
+ public static int PLAYSTATE_BUFFERING;
+ public static int PLAYSTATE_ERROR;
+ public static int PLAYSTATE_FAST_FORWARDING;
+ public static int PLAYSTATE_PAUSED;
+ public static int PLAYSTATE_PLAYING;
+ public static int PLAYSTATE_REWINDING;
+ public static int PLAYSTATE_SKIPPING_BACKWARDS;
+ public static int PLAYSTATE_SKIPPING_FORWARDS;
+ public static int PLAYSTATE_STOPPED;
+}
+
+-keep class android.media.RemoteControlClient$MetadataEditor {
+
+ public synchronized void apply();
+ public synchronized void clear();
+ public synchronized android.media.RemoteControlClient$MetadataEditor putBitmap(int, android.graphics.Bitmap);
+ public android.media.MediaMetadataEditor putBitmap(int, android.graphics.Bitmap);
+ public synchronized android.media.RemoteControlClient$MetadataEditor putLong(int, long);
+ public android.media.MediaMetadataEditor putLong(int, long);
+ public synchronized android.media.RemoteControlClient$MetadataEditor putObject(int, java.lang.Object);
+ public android.media.MediaMetadataEditor putObject(int, java.lang.Object);
+ public synchronized android.media.RemoteControlClient$MetadataEditor putString(int, java.lang.String);
+ public android.media.MediaMetadataEditor putString(int, java.lang.String);
+
+
+ public static int BITMAP_KEY_ARTWORK;
+}
+
+-keep class android.media.RemoteControlClient$OnGetPlaybackPositionListener {
+
+ public abstract long onGetPlaybackPosition();
+
+
+}
+
+-keep class android.media.RemoteControlClient$OnMetadataUpdateListener {
+
+ public abstract void onMetadataUpdate(int, java.lang.Object);
+
+
+}
+
+-keep class android.media.RemoteControlClient$OnPlaybackPositionUpdateListener {
+
+ public abstract void onPlaybackPositionUpdate(long);
+
+
+}
+
+-keep class android.media.RemoteController {
+ <init>(android.content.Context, android.media.RemoteController$OnClientUpdateListener);
+ <init>(android.content.Context, android.media.RemoteController$OnClientUpdateListener, android.os.Looper);
+
+ public boolean clearArtworkConfiguration();
+ public android.media.RemoteController$MetadataEditor editMetadata();
+ public long getEstimatedMediaPosition();
+ public boolean seekTo(long);
+ public boolean sendMediaKeyEvent(android.view.KeyEvent);
+ public boolean setArtworkConfiguration(int, int);
+ public boolean setSynchronizationMode(int);
+
+
+ public static int POSITION_SYNCHRONIZATION_CHECK;
+ public static int POSITION_SYNCHRONIZATION_NONE;
+}
+
+-keep class android.media.RemoteController$MetadataEditor {
+
+ public synchronized void apply();
+
+
+}
+
+-keep class android.media.RemoteController$OnClientUpdateListener {
+
+ public abstract void onClientChange(boolean);
+ public abstract void onClientMetadataUpdate(android.media.RemoteController$MetadataEditor);
+ public abstract void onClientPlaybackStateUpdate(int);
+ public abstract void onClientPlaybackStateUpdate(int, long, long, float);
+ public abstract void onClientTransportControlUpdate(int);
+
+
+}
+
+-keep class android.media.VolumeProvider {
+ <init>(int, int, int);
+
+ public int getCurrentVolume();
+ public int getMaxVolume();
+ public int getVolumeControl();
+ public void onAdjustVolume(int);
+ public void onSetVolumeTo(int);
+ public void setCurrentVolume(int);
+
+
+ public static int VOLUME_CONTROL_ABSOLUTE;
+ public static int VOLUME_CONTROL_FIXED;
+ public static int VOLUME_CONTROL_RELATIVE;
+}
+
+-keep class android.media.session.MediaController {
+ <init>(android.content.Context, android.media.session.MediaSession$Token);
+
+ public void adjustVolume(int, int);
+ public boolean dispatchMediaButtonEvent(android.view.KeyEvent);
+ public android.os.Bundle getExtras();
+ public long getFlags();
+ public android.media.MediaMetadata getMetadata();
+ public java.lang.String getPackageName();
+ public android.media.session.MediaController$PlaybackInfo getPlaybackInfo();
+ public android.media.session.PlaybackState getPlaybackState();
+ public java.util.List getQueue();
+ public java.lang.CharSequence getQueueTitle();
+ public int getRatingType();
+ public android.app.PendingIntent getSessionActivity();
+ public android.media.session.MediaSession$Token getSessionToken();
+ public android.media.session.MediaController$TransportControls getTransportControls();
+ public void registerCallback(android.media.session.MediaController$Callback);
+ public void registerCallback(android.media.session.MediaController$Callback, android.os.Handler);
+ public void sendCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
+ public void setVolumeTo(int, int);
+ public void unregisterCallback(android.media.session.MediaController$Callback);
+
+
+}
+
+-keep class android.media.session.MediaController$Callback {
+ <init>();
+
+ public void onAudioInfoChanged(android.media.session.MediaController$PlaybackInfo);
+ public void onExtrasChanged(android.os.Bundle);
+ public void onMetadataChanged(android.media.MediaMetadata);
+ public void onPlaybackStateChanged(android.media.session.PlaybackState);
+ public void onQueueChanged(java.util.List);
+ public void onQueueTitleChanged(java.lang.CharSequence);
+ public void onSessionDestroyed();
+ public void onSessionEvent(java.lang.String, android.os.Bundle);
+
+
+}
+
+-keep class android.media.session.MediaController$PlaybackInfo {
+
+ public android.media.AudioAttributes getAudioAttributes();
+ public int getCurrentVolume();
+ public int getMaxVolume();
+ public int getPlaybackType();
+ public int getVolumeControl();
+
+
+ public static int PLAYBACK_TYPE_LOCAL;
+ public static int PLAYBACK_TYPE_REMOTE;
+}
+
+-keep class android.media.session.MediaController$TransportControls {
+
+ public void fastForward();
+ public void pause();
+ public void play();
+ public void playFromMediaId(java.lang.String, android.os.Bundle);
+ public void playFromSearch(java.lang.String, android.os.Bundle);
+ public void playFromUri(android.net.Uri, android.os.Bundle);
+ public void rewind();
+ public void seekTo(long);
+ public void sendCustomAction(android.media.session.PlaybackState$CustomAction, android.os.Bundle);
+ public void sendCustomAction(java.lang.String, android.os.Bundle);
+ public void setRating(android.media.Rating);
+ public void skipToNext();
+ public void skipToPrevious();
+ public void skipToQueueItem(long);
+ public void stop();
+
+
+}
+
+-keep class android.media.session.MediaSession {
+ <init>(android.content.Context, java.lang.String);
+
+ public android.media.session.MediaController getController();
+ public android.media.session.MediaSession$Token getSessionToken();
+ public boolean isActive();
+ public void release();
+ public void sendSessionEvent(java.lang.String, android.os.Bundle);
+ public void setActive(boolean);
+ public void setCallback(android.media.session.MediaSession$Callback);
+ public void setCallback(android.media.session.MediaSession$Callback, android.os.Handler);
+ public void setExtras(android.os.Bundle);
+ public void setFlags(int);
+ public void setMediaButtonReceiver(android.app.PendingIntent);
+ public void setMetadata(android.media.MediaMetadata);
+ public void setPlaybackState(android.media.session.PlaybackState);
+ public void setPlaybackToLocal(android.media.AudioAttributes);
+ public void setPlaybackToRemote(android.media.VolumeProvider);
+ public void setQueue(java.util.List);
+ public void setQueueTitle(java.lang.CharSequence);
+ public void setRatingType(int);
+ public void setSessionActivity(android.app.PendingIntent);
+
+
+ public static int FLAG_HANDLES_MEDIA_BUTTONS;
+ public static int FLAG_HANDLES_TRANSPORT_CONTROLS;
+}
+
+-keep class android.media.session.MediaSession$Callback {
+ <init>();
+
+ public void onCommand(java.lang.String, android.os.Bundle, android.os.ResultReceiver);
+ public void onCustomAction(java.lang.String, android.os.Bundle);
+ public void onFastForward();
+ public boolean onMediaButtonEvent(android.content.Intent);
+ public void onPause();
+ public void onPlay();
+ public void onPlayFromMediaId(java.lang.String, android.os.Bundle);
+ public void onPlayFromSearch(java.lang.String, android.os.Bundle);
+ public void onPlayFromUri(android.net.Uri, android.os.Bundle);
+ public void onRewind();
+ public void onSeekTo(long);
+ public void onSetRating(android.media.Rating);
+ public void onSkipToNext();
+ public void onSkipToPrevious();
+ public void onSkipToQueueItem(long);
+ public void onStop();
+
+
+}
+
+-keep class android.media.session.MediaSession$QueueItem {
+ <init>(android.media.MediaDescription, long);
+
+ public int describeContents();
+ public android.media.MediaDescription getDescription();
+ public long getQueueId();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int UNKNOWN_ID;
+}
+
+-keep class android.media.session.MediaSession$Token {
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.media.session.PlaybackState {
+
+ public int describeContents();
+ public long getActions();
+ public long getActiveQueueItemId();
+ public long getBufferedPosition();
+ public java.util.List getCustomActions();
+ public java.lang.CharSequence getErrorMessage();
+ public android.os.Bundle getExtras();
+ public long getLastPositionUpdateTime();
+ public float getPlaybackSpeed();
+ public long getPosition();
+ public int getState();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static long ACTION_FAST_FORWARD;
+ public static long ACTION_PAUSE;
+ public static long ACTION_PLAY;
+ public static long ACTION_PLAY_FROM_MEDIA_ID;
+ public static long ACTION_PLAY_FROM_SEARCH;
+ public static long ACTION_PLAY_FROM_URI;
+ public static long ACTION_PLAY_PAUSE;
+ public static long ACTION_REWIND;
+ public static long ACTION_SEEK_TO;
+ public static long ACTION_SET_RATING;
+ public static long ACTION_SKIP_TO_NEXT;
+ public static long ACTION_SKIP_TO_PREVIOUS;
+ public static long ACTION_SKIP_TO_QUEUE_ITEM;
+ public static long ACTION_STOP;
+ public static android.os.Parcelable$Creator CREATOR;
+ public static long PLAYBACK_POSITION_UNKNOWN;
+ public static int STATE_BUFFERING;
+ public static int STATE_CONNECTING;
+ public static int STATE_ERROR;
+ public static int STATE_FAST_FORWARDING;
+ public static int STATE_NONE;
+ public static int STATE_PAUSED;
+ public static int STATE_PLAYING;
+ public static int STATE_REWINDING;
+ public static int STATE_SKIPPING_TO_NEXT;
+ public static int STATE_SKIPPING_TO_PREVIOUS;
+ public static int STATE_SKIPPING_TO_QUEUE_ITEM;
+ public static int STATE_STOPPED;
+}
+
+-keep class android.media.session.PlaybackState$CustomAction {
+
+ public int describeContents();
+ public java.lang.String getAction();
+ public android.os.Bundle getExtras();
+ public int getIcon();
+ public java.lang.CharSequence getName();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.net.Uri {
+
+ public abstract android.net.Uri$Builder buildUpon();
+ public int compareTo(android.net.Uri);
+ public int compareTo(java.lang.Object);
+ public static java.lang.String decode(java.lang.String);
+ public static java.lang.String encode(java.lang.String);
+ public static java.lang.String encode(java.lang.String, java.lang.String);
+ public boolean equals(java.lang.Object);
+ public static android.net.Uri fromFile(java.io.File);
+ public static android.net.Uri fromParts(java.lang.String, java.lang.String, java.lang.String);
+ public abstract java.lang.String getAuthority();
+ public boolean getBooleanQueryParameter(java.lang.String, boolean);
+ public abstract java.lang.String getEncodedAuthority();
+ public abstract java.lang.String getEncodedFragment();
+ public abstract java.lang.String getEncodedPath();
+ public abstract java.lang.String getEncodedQuery();
+ public abstract java.lang.String getEncodedSchemeSpecificPart();
+ public abstract java.lang.String getEncodedUserInfo();
+ public abstract java.lang.String getFragment();
+ public abstract java.lang.String getHost();
+ public abstract java.lang.String getLastPathSegment();
+ public abstract java.lang.String getPath();
+ public abstract java.util.List getPathSegments();
+ public abstract int getPort();
+ public abstract java.lang.String getQuery();
+ public java.lang.String getQueryParameter(java.lang.String);
+ public java.util.Set getQueryParameterNames();
+ public java.util.List getQueryParameters(java.lang.String);
+ public abstract java.lang.String getScheme();
+ public abstract java.lang.String getSchemeSpecificPart();
+ public abstract java.lang.String getUserInfo();
+ public int hashCode();
+ public boolean isAbsolute();
+ public abstract boolean isHierarchical();
+ public boolean isOpaque();
+ public abstract boolean isRelative();
+ public android.net.Uri normalizeScheme();
+ public static android.net.Uri parse(java.lang.String);
+ public abstract java.lang.String toString();
+ public static android.net.Uri withAppendedPath(android.net.Uri, java.lang.String);
+ public static void writeToParcel(android.os.Parcel, android.net.Uri);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static android.net.Uri EMPTY;
+}
+
+-keep class android.net.Uri$Builder {
+ <init>();
+
+ public android.net.Uri$Builder appendEncodedPath(java.lang.String);
+ public android.net.Uri$Builder appendPath(java.lang.String);
+ public android.net.Uri$Builder appendQueryParameter(java.lang.String, java.lang.String);
+ public android.net.Uri$Builder authority(java.lang.String);
+ public android.net.Uri build();
+ public android.net.Uri$Builder clearQuery();
+ public android.net.Uri$Builder encodedAuthority(java.lang.String);
+ public android.net.Uri$Builder encodedFragment(java.lang.String);
+ public android.net.Uri$Builder encodedOpaquePart(java.lang.String);
+ public android.net.Uri$Builder encodedPath(java.lang.String);
+ public android.net.Uri$Builder encodedQuery(java.lang.String);
+ public android.net.Uri$Builder fragment(java.lang.String);
+ public android.net.Uri$Builder opaquePart(java.lang.String);
+ public android.net.Uri$Builder path(java.lang.String);
+ public android.net.Uri$Builder query(java.lang.String);
+ public android.net.Uri$Builder scheme(java.lang.String);
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.os.BaseBundle {
+
+ public void clear();
+ public boolean containsKey(java.lang.String);
+ public java.lang.Object get(java.lang.String);
+ public boolean getBoolean(java.lang.String);
+ public boolean getBoolean(java.lang.String, boolean);
+ public boolean[] getBooleanArray(java.lang.String);
+ public double getDouble(java.lang.String);
+ public double getDouble(java.lang.String, double);
+ public double[] getDoubleArray(java.lang.String);
+ public int getInt(java.lang.String);
+ public int getInt(java.lang.String, int);
+ public int[] getIntArray(java.lang.String);
+ public long getLong(java.lang.String);
+ public long getLong(java.lang.String, long);
+ public long[] getLongArray(java.lang.String);
+ public java.lang.String getString(java.lang.String);
+ public java.lang.String getString(java.lang.String, java.lang.String);
+ public java.lang.String[] getStringArray(java.lang.String);
+ public boolean isEmpty();
+ public java.util.Set keySet();
+ public void putAll(android.os.PersistableBundle);
+ public void putBoolean(java.lang.String, boolean);
+ public void putBooleanArray(java.lang.String, boolean[]);
+ public void putDouble(java.lang.String, double);
+ public void putDoubleArray(java.lang.String, double[]);
+ public void putInt(java.lang.String, int);
+ public void putIntArray(java.lang.String, int[]);
+ public void putLong(java.lang.String, long);
+ public void putLongArray(java.lang.String, long[]);
+ public void putString(java.lang.String, java.lang.String);
+ public void putStringArray(java.lang.String, java.lang.String[]);
+ public void remove(java.lang.String);
+ public int size();
+
+
+}
+
+-keep class android.os.Bundle {
+ <init>();
+ <init>(java.lang.ClassLoader);
+ <init>(int);
+ <init>(android.os.Bundle);
+ <init>(android.os.PersistableBundle);
+
+ public void clear();
+ public java.lang.Object clone();
+ public int describeContents();
+ public android.os.IBinder getBinder(java.lang.String);
+ public android.os.Bundle getBundle(java.lang.String);
+ public byte getByte(java.lang.String);
+ public java.lang.Byte getByte(java.lang.String, byte);
+ public byte[] getByteArray(java.lang.String);
+ public char getChar(java.lang.String);
+ public char getChar(java.lang.String, char);
+ public char[] getCharArray(java.lang.String);
+ public java.lang.CharSequence getCharSequence(java.lang.String);
+ public java.lang.CharSequence getCharSequence(java.lang.String, java.lang.CharSequence);
+ public java.lang.CharSequence[] getCharSequenceArray(java.lang.String);
+ public java.util.ArrayList getCharSequenceArrayList(java.lang.String);
+ public java.lang.ClassLoader getClassLoader();
+ public float getFloat(java.lang.String);
+ public float getFloat(java.lang.String, float);
+ public float[] getFloatArray(java.lang.String);
+ public java.util.ArrayList getIntegerArrayList(java.lang.String);
+ public android.os.Parcelable getParcelable(java.lang.String);
+ public android.os.Parcelable[] getParcelableArray(java.lang.String);
+ public java.util.ArrayList getParcelableArrayList(java.lang.String);
+ public java.io.Serializable getSerializable(java.lang.String);
+ public short getShort(java.lang.String);
+ public short getShort(java.lang.String, short);
+ public short[] getShortArray(java.lang.String);
+ public android.util.Size getSize(java.lang.String);
+ public android.util.SizeF getSizeF(java.lang.String);
+ public android.util.SparseArray getSparseParcelableArray(java.lang.String);
+ public java.util.ArrayList getStringArrayList(java.lang.String);
+ public boolean hasFileDescriptors();
+ public void putAll(android.os.Bundle);
+ public void putBinder(java.lang.String, android.os.IBinder);
+ public void putBundle(java.lang.String, android.os.Bundle);
+ public void putByte(java.lang.String, byte);
+ public void putByteArray(java.lang.String, byte[]);
+ public void putChar(java.lang.String, char);
+ public void putCharArray(java.lang.String, char[]);
+ public void putCharSequence(java.lang.String, java.lang.CharSequence);
+ public void putCharSequenceArray(java.lang.String, java.lang.CharSequence[]);
+ public void putCharSequenceArrayList(java.lang.String, java.util.ArrayList);
+ public void putFloat(java.lang.String, float);
+ public void putFloatArray(java.lang.String, float[]);
+ public void putIntegerArrayList(java.lang.String, java.util.ArrayList);
+ public void putParcelable(java.lang.String, android.os.Parcelable);
+ public void putParcelableArray(java.lang.String, android.os.Parcelable[]);
+ public void putParcelableArrayList(java.lang.String, java.util.ArrayList);
+ public void putSerializable(java.lang.String, java.io.Serializable);
+ public void putShort(java.lang.String, short);
+ public void putShortArray(java.lang.String, short[]);
+ public void putSize(java.lang.String, android.util.Size);
+ public void putSizeF(java.lang.String, android.util.SizeF);
+ public void putSparseParcelableArray(java.lang.String, android.util.SparseArray);
+ public void putStringArrayList(java.lang.String, java.util.ArrayList);
+ public void readFromParcel(android.os.Parcel);
+ public void setClassLoader(java.lang.ClassLoader);
+ public synchronized java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static android.os.Bundle EMPTY;
+}
+
+-keep class android.os.CancellationSignal {
+ <init>();
+
+ public void cancel();
+ public boolean isCanceled();
+ public void setOnCancelListener(android.os.CancellationSignal$OnCancelListener);
+ public void throwIfCanceled();
+
+
+}
+
+-keep class android.os.CancellationSignal$OnCancelListener {
+
+ public abstract void onCancel();
+
+
+}
+
+-keep class android.os.Handler {
+ <init>();
+ <init>(android.os.Handler$Callback);
+ <init>(android.os.Looper);
+ <init>(android.os.Looper, android.os.Handler$Callback);
+
+ public void dispatchMessage(android.os.Message);
+ public void dump(android.util.Printer, java.lang.String);
+ public android.os.Looper getLooper();
+ public java.lang.String getMessageName(android.os.Message);
+ public void handleMessage(android.os.Message);
+ public boolean hasMessages(int);
+ public boolean hasMessages(int, java.lang.Object);
+ public android.os.Message obtainMessage();
+ public android.os.Message obtainMessage(int);
+ public android.os.Message obtainMessage(int, java.lang.Object);
+ public android.os.Message obtainMessage(int, int, int);
+ public android.os.Message obtainMessage(int, int, int, java.lang.Object);
+ public boolean post(java.lang.Runnable);
+ public boolean postAtFrontOfQueue(java.lang.Runnable);
+ public boolean postAtTime(java.lang.Runnable, long);
+ public boolean postAtTime(java.lang.Runnable, java.lang.Object, long);
+ public boolean postDelayed(java.lang.Runnable, long);
+ public void removeCallbacks(java.lang.Runnable);
+ public void removeCallbacks(java.lang.Runnable, java.lang.Object);
+ public void removeCallbacksAndMessages(java.lang.Object);
+ public void removeMessages(int);
+ public void removeMessages(int, java.lang.Object);
+ public boolean sendEmptyMessage(int);
+ public boolean sendEmptyMessageAtTime(int, long);
+ public boolean sendEmptyMessageDelayed(int, long);
+ public boolean sendMessage(android.os.Message);
+ public boolean sendMessageAtFrontOfQueue(android.os.Message);
+ public boolean sendMessageAtTime(android.os.Message, long);
+ public boolean sendMessageDelayed(android.os.Message, long);
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.os.Handler$Callback {
+
+ public abstract boolean handleMessage(android.os.Message);
+
+
+}
+
+-keep class android.os.IBinder {
+
+ public abstract void dump(java.io.FileDescriptor, java.lang.String[]);
+ public abstract void dumpAsync(java.io.FileDescriptor, java.lang.String[]);
+ public abstract java.lang.String getInterfaceDescriptor();
+ public abstract boolean isBinderAlive();
+ public abstract void linkToDeath(android.os.IBinder$DeathRecipient, int);
+ public abstract boolean pingBinder();
+ public abstract android.os.IInterface queryLocalInterface(java.lang.String);
+ public abstract boolean transact(int, android.os.Parcel, android.os.Parcel, int);
+ public abstract boolean unlinkToDeath(android.os.IBinder$DeathRecipient, int);
+
+
+ public static int DUMP_TRANSACTION;
+ public static int FIRST_CALL_TRANSACTION;
+ public static int FLAG_ONEWAY;
+ public static int INTERFACE_TRANSACTION;
+ public static int LAST_CALL_TRANSACTION;
+ public static int LIKE_TRANSACTION;
+ public static int PING_TRANSACTION;
+ public static int TWEET_TRANSACTION;
+}
+
+-keep class android.os.IBinder$DeathRecipient {
+
+ public abstract void binderDied();
+
+
+}
+
+-keep class android.os.IInterface {
+
+ public abstract android.os.IBinder asBinder();
+
+
+}
+
+-keep class android.os.Looper {
+
+ public void dump(android.util.Printer, java.lang.String);
+ public static android.os.Looper getMainLooper();
+ public android.os.MessageQueue getQueue();
+ public java.lang.Thread getThread();
+ public boolean isCurrentThread();
+ public static void loop();
+ public static android.os.Looper myLooper();
+ public static android.os.MessageQueue myQueue();
+ public static void prepare();
+ public static void prepareMainLooper();
+ public void quit();
+ public void quitSafely();
+ public void setMessageLogging(android.util.Printer);
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.os.Message {
+ <init>();
+
+ public void copyFrom(android.os.Message);
+ public int describeContents();
+ public java.lang.Runnable getCallback();
+ public android.os.Bundle getData();
+ public android.os.Handler getTarget();
+ public long getWhen();
+ public boolean isAsynchronous();
+ public static android.os.Message obtain();
+ public static android.os.Message obtain(android.os.Message);
+ public static android.os.Message obtain(android.os.Handler);
+ public static android.os.Message obtain(android.os.Handler, java.lang.Runnable);
+ public static android.os.Message obtain(android.os.Handler, int);
+ public static android.os.Message obtain(android.os.Handler, int, java.lang.Object);
+ public static android.os.Message obtain(android.os.Handler, int, int, int);
+ public static android.os.Message obtain(android.os.Handler, int, int, int, java.lang.Object);
+ public android.os.Bundle peekData();
+ public void recycle();
+ public void sendToTarget();
+ public void setAsynchronous(boolean);
+ public void setData(android.os.Bundle);
+ public void setTarget(android.os.Handler);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public int arg1;
+ public int arg2;
+ public java.lang.Object obj;
+ public android.os.Messenger replyTo;
+ public int sendingUid;
+ public int what;
+}
+
+-keep class android.os.MessageQueue {
+
+ public void addIdleHandler(android.os.MessageQueue$IdleHandler);
+ public void addOnFileDescriptorEventListener(java.io.FileDescriptor, int, android.os.MessageQueue$OnFileDescriptorEventListener);
+ protected void finalize();
+ public boolean isIdle();
+ public void removeIdleHandler(android.os.MessageQueue$IdleHandler);
+ public void removeOnFileDescriptorEventListener(java.io.FileDescriptor);
+
+
+}
+
+-keep class android.os.MessageQueue$IdleHandler {
+
+ public abstract boolean queueIdle();
+
+
+}
+
+-keep class android.os.MessageQueue$OnFileDescriptorEventListener {
+
+ public abstract int onFileDescriptorEvents(java.io.FileDescriptor, int);
+
+
+ public static int EVENT_ERROR;
+ public static int EVENT_INPUT;
+ public static int EVENT_OUTPUT;
+}
+
+-keep class android.os.Messenger {
+ <init>(android.os.Handler);
+ <init>(android.os.IBinder);
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public android.os.IBinder getBinder();
+ public int hashCode();
+ public static android.os.Messenger readMessengerOrNullFromParcel(android.os.Parcel);
+ public void send(android.os.Message);
+ public static void writeMessengerOrNullToParcel(android.os.Messenger, android.os.Parcel);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.os.Parcel {
+
+ public void appendFrom(android.os.Parcel, int, int);
+ public android.os.IBinder[] createBinderArray();
+ public java.util.ArrayList createBinderArrayList();
+ public boolean[] createBooleanArray();
+ public byte[] createByteArray();
+ public char[] createCharArray();
+ public double[] createDoubleArray();
+ public float[] createFloatArray();
+ public int[] createIntArray();
+ public long[] createLongArray();
+ public java.lang.String[] createStringArray();
+ public java.util.ArrayList createStringArrayList();
+ public java.lang.Object[] createTypedArray(android.os.Parcelable$Creator);
+ public java.util.ArrayList createTypedArrayList(android.os.Parcelable$Creator);
+ public int dataAvail();
+ public int dataCapacity();
+ public int dataPosition();
+ public int dataSize();
+ public void enforceInterface(java.lang.String);
+ protected void finalize();
+ public boolean hasFileDescriptors();
+ public byte[] marshall();
+ public static android.os.Parcel obtain();
+ public java.lang.Object[] readArray(java.lang.ClassLoader);
+ public java.util.ArrayList readArrayList(java.lang.ClassLoader);
+ public void readBinderArray(android.os.IBinder[]);
+ public void readBinderList(java.util.List);
+ public void readBooleanArray(boolean[]);
+ public android.os.Bundle readBundle();
+ public android.os.Bundle readBundle(java.lang.ClassLoader);
+ public byte readByte();
+ public void readByteArray(byte[]);
+ public void readCharArray(char[]);
+ public double readDouble();
+ public void readDoubleArray(double[]);
+ public void readException();
+ public void readException(int, java.lang.String);
+ public android.os.ParcelFileDescriptor readFileDescriptor();
+ public float readFloat();
+ public void readFloatArray(float[]);
+ public java.util.HashMap readHashMap(java.lang.ClassLoader);
+ public int readInt();
+ public void readIntArray(int[]);
+ public void readList(java.util.List, java.lang.ClassLoader);
+ public long readLong();
+ public void readLongArray(long[]);
+ public void readMap(java.util.Map, java.lang.ClassLoader);
+ public android.os.Parcelable readParcelable(java.lang.ClassLoader);
+ public android.os.Parcelable[] readParcelableArray(java.lang.ClassLoader);
+ public android.os.PersistableBundle readPersistableBundle();
+ public android.os.PersistableBundle readPersistableBundle(java.lang.ClassLoader);
+ public java.io.Serializable readSerializable();
+ public android.util.Size readSize();
+ public android.util.SizeF readSizeF();
+ public android.util.SparseArray readSparseArray(java.lang.ClassLoader);
+ public android.util.SparseBooleanArray readSparseBooleanArray();
+ public java.lang.String readString();
+ public void readStringArray(java.lang.String[]);
+ public void readStringList(java.util.List);
+ public android.os.IBinder readStrongBinder();
+ public void readTypedArray(java.lang.Object[], android.os.Parcelable$Creator);
+ public void readTypedList(java.util.List, android.os.Parcelable$Creator);
+ public java.lang.Object readTypedObject(android.os.Parcelable$Creator);
+ public java.lang.Object readValue(java.lang.ClassLoader);
+ public void recycle();
+ public void setDataCapacity(int);
+ public void setDataPosition(int);
+ public void setDataSize(int);
+ public void unmarshall(byte[], int, int);
+ public void writeArray(java.lang.Object[]);
+ public void writeBinderArray(android.os.IBinder[]);
+ public void writeBinderList(java.util.List);
+ public void writeBooleanArray(boolean[]);
+ public void writeBundle(android.os.Bundle);
+ public void writeByte(byte);
+ public void writeByteArray(byte[]);
+ public void writeByteArray(byte[], int, int);
+ public void writeCharArray(char[]);
+ public void writeDouble(double);
+ public void writeDoubleArray(double[]);
+ public void writeException(java.lang.Exception);
+ public void writeFileDescriptor(java.io.FileDescriptor);
+ public void writeFloat(float);
+ public void writeFloatArray(float[]);
+ public void writeInt(int);
+ public void writeIntArray(int[]);
+ public void writeInterfaceToken(java.lang.String);
+ public void writeList(java.util.List);
+ public void writeLong(long);
+ public void writeLongArray(long[]);
+ public void writeMap(java.util.Map);
+ public void writeNoException();
+ public void writeParcelable(android.os.Parcelable, int);
+ public void writeParcelableArray(android.os.Parcelable[], int);
+ public void writePersistableBundle(android.os.PersistableBundle);
+ public void writeSerializable(java.io.Serializable);
+ public void writeSize(android.util.Size);
+ public void writeSizeF(android.util.SizeF);
+ public void writeSparseArray(android.util.SparseArray);
+ public void writeSparseBooleanArray(android.util.SparseBooleanArray);
+ public void writeString(java.lang.String);
+ public void writeStringArray(java.lang.String[]);
+ public void writeStringList(java.util.List);
+ public void writeStrongBinder(android.os.IBinder);
+ public void writeStrongInterface(android.os.IInterface);
+ public void writeTypedArray(android.os.Parcelable[], int);
+ public void writeTypedList(java.util.List);
+ public void writeTypedObject(android.os.Parcelable, int);
+ public void writeValue(java.lang.Object);
+
+
+ public static android.os.Parcelable$Creator STRING_CREATOR;
+}
+
+-keep class android.os.ParcelFileDescriptor {
+ <init>(android.os.ParcelFileDescriptor);
+
+ public static android.os.ParcelFileDescriptor adoptFd(int);
+ public boolean canDetectErrors();
+ public void checkError();
+ public void close();
+ public void closeWithError(java.lang.String);
+ public static android.os.ParcelFileDescriptor[] createPipe();
+ public static android.os.ParcelFileDescriptor[] createReliablePipe();
+ public static android.os.ParcelFileDescriptor[] createReliableSocketPair();
+ public static android.os.ParcelFileDescriptor[] createSocketPair();
+ public int describeContents();
+ public int detachFd();
+ public static android.os.ParcelFileDescriptor dup(java.io.FileDescriptor);
+ public android.os.ParcelFileDescriptor dup();
+ protected void finalize();
+ public static android.os.ParcelFileDescriptor fromDatagramSocket(java.net.DatagramSocket);
+ public static android.os.ParcelFileDescriptor fromFd(int);
+ public static android.os.ParcelFileDescriptor fromSocket(java.net.Socket);
+ public int getFd();
+ public java.io.FileDescriptor getFileDescriptor();
+ public long getStatSize();
+ public static android.os.ParcelFileDescriptor open(java.io.File, int);
+ public static android.os.ParcelFileDescriptor open(java.io.File, int, android.os.Handler, android.os.ParcelFileDescriptor$OnCloseListener);
+ public static int parseMode(java.lang.String);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int MODE_APPEND;
+ public static int MODE_CREATE;
+ public static int MODE_READ_ONLY;
+ public static int MODE_READ_WRITE;
+ public static int MODE_TRUNCATE;
+ public static int MODE_WORLD_READABLE;
+ public static int MODE_WORLD_WRITEABLE;
+ public static int MODE_WRITE_ONLY;
+}
+
+-keep class android.os.ParcelFileDescriptor$OnCloseListener {
+
+ public abstract void onClose(java.io.IOException);
+
+
+}
+
+-keep class android.os.Parcelable {
+
+ public abstract int describeContents();
+ public abstract void writeToParcel(android.os.Parcel, int);
+
+
+ public static int CONTENTS_FILE_DESCRIPTOR;
+ public static int PARCELABLE_WRITE_RETURN_VALUE;
+}
+
+-keep class android.os.Parcelable$Creator {
+
+ public abstract java.lang.Object createFromParcel(android.os.Parcel);
+ public abstract java.lang.Object[] newArray(int);
+
+
+}
+
+-keep class android.os.PatternMatcher {
+ <init>(java.lang.String, int);
+ <init>(android.os.Parcel);
+
+ public int describeContents();
+ public java.lang.String getPath();
+ public int getType();
+ public boolean match(java.lang.String);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int PATTERN_LITERAL;
+ public static int PATTERN_PREFIX;
+ public static int PATTERN_SIMPLE_GLOB;
+}
+
+-keep class android.os.PersistableBundle {
+ <init>();
+ <init>(int);
+ <init>(android.os.PersistableBundle);
+
+ public java.lang.Object clone();
+ public int describeContents();
+ public android.os.PersistableBundle getPersistableBundle(java.lang.String);
+ public void putPersistableBundle(java.lang.String, android.os.PersistableBundle);
+ public synchronized java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static android.os.PersistableBundle EMPTY;
+}
+
+-keep class android.os.RemoteException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class android.os.ResultReceiver {
+ <init>(android.os.Handler);
+
+ public int describeContents();
+ protected void onReceiveResult(int, android.os.Bundle);
+ public void send(int, android.os.Bundle);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.os.UserHandle {
+ <init>(android.os.Parcel);
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public static android.os.UserHandle readFromParcel(android.os.Parcel);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+ public static void writeToParcel(android.os.UserHandle, android.os.Parcel);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.os.Vibrator {
+
+ public abstract void cancel();
+ public abstract boolean hasVibrator();
+ public void vibrate(long);
+ public void vibrate(long, android.media.AudioAttributes);
+ public void vibrate(long[], int);
+ public void vibrate(long[], int, android.media.AudioAttributes);
+
+
+}
+
+-keep class android.support.car.Car {
+
+ public void connect();
+ public static android.support.car.Car createCar(android.content.Context, android.support.car.CarConnectionCallback, android.os.Handler);
+ public static android.support.car.Car createCar(android.content.Context, android.support.car.CarConnectionCallback);
+ public void disconnect();
+ public java.lang.Object getCarManager(java.lang.String);
+ public java.lang.Object getCarManager(java.lang.Class);
+ public boolean isConnected();
+ public boolean isConnecting();
+
+
+ public static java.lang.String APP_FOCUS_SERVICE;
+ public static java.lang.String AUDIO_SERVICE;
+ public static int CONNECTION_TYPE_ADB_EMULATOR;
+ public static int CONNECTION_TYPE_EMBEDDED;
+ public static int CONNECTION_TYPE_EMBEDDED_MOCKING;
+ public static int CONNECTION_TYPE_EMULATOR;
+ public static int CONNECTION_TYPE_ON_DEVICE_EMULATOR;
+ public static int CONNECTION_TYPE_UNKNOWN;
+ public static int CONNECTION_TYPE_USB;
+ public static int CONNECTION_TYPE_WIFI;
+ public static java.lang.String INFO_SERVICE;
+ public static java.lang.String NAVIGATION_STATUS_SERVICE;
+ public static java.lang.String PACKAGE_SERVICE;
+ public static java.lang.String PERMISSION_CAR_NAVIGATION_MANAGER;
+ public static java.lang.String PERMISSION_VENDOR_EXTENSION;
+ public static java.lang.String SENSOR_SERVICE;
+}
+
+-keep class android.support.car.CarAppFocusManager {
+ <init>();
+
+ public abstract void abandonAppFocus(android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback, int);
+ public abstract void abandonAppFocus(android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback);
+ public abstract void addFocusListener(android.support.car.CarAppFocusManager$OnAppFocusChangedListener, int);
+ public abstract boolean isOwningFocus(int, android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback);
+ public abstract void removeFocusListener(android.support.car.CarAppFocusManager$OnAppFocusChangedListener, int);
+ public abstract void removeFocusListener(android.support.car.CarAppFocusManager$OnAppFocusChangedListener);
+ public abstract int requestAppFocus(int, android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback);
+
+
+ public static int APP_FOCUS_REQUEST_FAILED;
+ public static int APP_FOCUS_REQUEST_SUCCEEDED;
+ public static int APP_FOCUS_TYPE_NAVIGATION;
+}
+
+-keep class android.support.car.CarAppFocusManager$OnAppFocusChangedListener {
+
+ public abstract void onAppFocusChanged(android.support.car.CarAppFocusManager, int, boolean);
+
+
+}
+
+-keep class android.support.car.CarAppFocusManager$OnAppFocusOwnershipCallback {
+
+ public abstract void onAppFocusOwnershipGranted(android.support.car.CarAppFocusManager, int);
+ public abstract void onAppFocusOwnershipLost(android.support.car.CarAppFocusManager, int);
+
+
+}
+
+-keep class android.support.car.CarConnectionCallback {
+ <init>();
+
+ public abstract void onConnected(android.support.car.Car);
+ public abstract void onDisconnected(android.support.car.Car);
+
+
+}
+
+-keep class android.support.car.CarInfoManager {
+ <init>();
+
+ public abstract int getDriverPosition();
+ public abstract java.lang.String getHeadunitManufacturer();
+ public abstract java.lang.String getHeadunitModel();
+ public abstract java.lang.String getHeadunitSoftwareBuild();
+ public abstract java.lang.String getHeadunitSoftwareVersion();
+ public abstract java.lang.String getManufacturer();
+ public abstract java.lang.String getModel();
+ public abstract java.lang.String getModelYear();
+ public abstract java.lang.String getVehicleId();
+
+
+ public static int DRIVER_SIDE_CENTER;
+ public static int DRIVER_SIDE_LEFT;
+ public static int DRIVER_SIDE_RIGHT;
+ public static int DRIVER_SIDE_UNKNOWN;
+}
+
+-keep class android.support.car.CarNotConnectedException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Exception);
+
+
+
+}
+
+-keep class android.support.car.annotation.ValueTypeDef {
+
+
+
+}
+
+-keep class android.support.car.annotation.VersionDef {
+
+
+
+}
+
+-keep class android.support.car.hardware.CarSensorEvent {
+
+ public android.support.car.hardware.CarSensorEvent$CompassData getCompassData();
+ public android.support.car.hardware.CarSensorEvent$DrivingStatusData getDrivingStatusData();
+ public android.support.car.hardware.CarSensorEvent$NightData getNightData();
+ public android.support.car.hardware.CarSensorEvent$ParkingBrakeData getParkingBrakeData();
+
+
+ public static int DRIVE_STATUS_FULLY_RESTRICTED;
+ public static int DRIVE_STATUS_LIMIT_MESSAGE_LEN;
+ public static int DRIVE_STATUS_NO_CONFIG;
+ public static int DRIVE_STATUS_NO_KEYBOARD_INPUT;
+ public static int DRIVE_STATUS_NO_VIDEO;
+ public static int DRIVE_STATUS_NO_VOICE_INPUT;
+ public static int DRIVE_STATUS_UNRESTRICTED;
+ public static int INDEX_COMPASS_BEARING;
+ public static int INDEX_COMPASS_PITCH;
+ public static int INDEX_COMPASS_ROLL;
+ public float[] floatValues;
+ public int[] intValues;
+ public int sensorType;
+ public long timestamp;
+}
+
+-keep class android.support.car.hardware.CarSensorEvent$CompassData {
+
+
+
+ public float bearing;
+ public float pitch;
+ public float roll;
+ public long timestamp;
+}
+
+-keep class android.support.car.hardware.CarSensorEvent$DrivingStatusData {
+
+ public boolean isConfigurationRestricted();
+ public boolean isFullyRestricted();
+ public boolean isKeyboardRestricted();
+ public boolean isMessageLengthRestricted();
+ public boolean isVideoRestricted();
+ public boolean isVoiceRestricted();
+
+
+ public int status;
+ public long timestamp;
+}
+
+-keep class android.support.car.hardware.CarSensorEvent$NightData {
+
+
+
+ public boolean isNightMode;
+ public long timestamp;
+}
+
+-keep class android.support.car.hardware.CarSensorEvent$ParkingBrakeData {
+
+
+
+ public boolean isEngaged;
+ public long timestamp;
+}
+
+-keep class android.support.car.hardware.CarSensorManager {
+ <init>();
+
+ public abstract boolean addListener(android.support.car.hardware.CarSensorManager$OnSensorChangedListener, int, int);
+ public abstract android.support.car.hardware.CarSensorEvent getLatestSensorEvent(int);
+ public abstract int[] getSupportedSensors();
+ public abstract boolean isSensorSupported(int);
+ public abstract void removeListener(android.support.car.hardware.CarSensorManager$OnSensorChangedListener);
+ public abstract void removeListener(android.support.car.hardware.CarSensorManager$OnSensorChangedListener, int);
+
+
+ public static int SENSOR_RATE_FASTEST;
+ public static int SENSOR_RATE_NORMAL;
+ public static int SENSOR_TYPE_COMPASS;
+ public static int SENSOR_TYPE_DRIVING_STATUS;
+ public static int SENSOR_TYPE_NIGHT;
+ public static int SENSOR_TYPE_PARKING_BRAKE;
+}
+
+-keep class android.support.car.hardware.CarSensorManager$OnSensorChangedListener {
+
+ public abstract void onSensorChanged(android.support.car.hardware.CarSensorManager, android.support.car.hardware.CarSensorEvent);
+
+
+}
+
+-keep class android.support.car.media.CarAudioManager {
+ <init>();
+
+ public abstract void abandonAudioFocus(android.media.AudioManager$OnAudioFocusChangeListener, android.media.AudioAttributes);
+ public abstract android.support.car.media.CarAudioRecord createCarAudioRecord(int);
+ public abstract android.media.AudioAttributes getAudioAttributesForCarUsage(int);
+ public abstract android.media.AudioFormat getAudioRecordAudioFormat();
+ public abstract int getAudioRecordMaxBufferSize();
+ public abstract int getAudioRecordMinBufferSize();
+ public abstract boolean isAudioRecordSupported();
+ public abstract boolean isMediaMuted();
+ public abstract int requestAudioFocus(android.media.AudioManager$OnAudioFocusChangeListener, android.media.AudioAttributes, int);
+
+
+ public static int CAR_AUDIO_USAGE_ALARM;
+ public static int CAR_AUDIO_USAGE_DEFAULT;
+ public static int CAR_AUDIO_USAGE_MUSIC;
+ public static int CAR_AUDIO_USAGE_NAVIGATION_GUIDANCE;
+ public static int CAR_AUDIO_USAGE_NOTIFICATION;
+ public static int CAR_AUDIO_USAGE_SYSTEM_SAFETY_ALERT;
+ public static int CAR_AUDIO_USAGE_SYSTEM_SOUND;
+ public static int CAR_AUDIO_USAGE_VOICE_CALL;
+ public static int CAR_AUDIO_USAGE_VOICE_COMMAND;
+}
+
+-keep class android.support.car.media.CarAudioRecord {
+ <init>();
+
+ public abstract int getAudioSessionId();
+ public abstract int getBufferSize();
+ public abstract int getRecordingState();
+ public abstract int getState();
+ public abstract int read(byte[], int, int);
+ public abstract void release();
+ public abstract void startRecording();
+ public abstract void stop();
+
+
+}
+
+-keep class android.support.car.navigation.CarNavigationInstrumentCluster {
+
+ public int getImageColorDepthBits();
+ public int getImageHeight();
+ public int getImageWidth();
+ public int getMinIntervalMillis();
+ public int getType();
+ public boolean supportsCustomImages();
+ public java.lang.String toString();
+
+
+ public static int CLUSTER_TYPE_CUSTOM_IMAGES_SUPPORTED;
+ public static int CLUSTER_TYPE_IMAGE_CODES_ONLY;
+}
+
+-keep class android.support.car.navigation.CarNavigationStatusManager {
+ <init>();
+
+ public abstract void addListener(android.support.car.navigation.CarNavigationStatusManager$CarNavigationCallback);
+ public abstract void removeListener();
+ public abstract void sendNavigationStatus(int);
+ public abstract void sendNavigationTurnDistanceEvent(int, int, int, int);
+ public abstract void sendNavigationTurnEvent(int, java.lang.CharSequence, int, int, int);
+
+
+ public static int DISTANCE_FEET;
+ public static int DISTANCE_KILOMETERS;
+ public static int DISTANCE_METERS;
+ public static int DISTANCE_MILES;
+ public static int DISTANCE_YARDS;
+ public static int STATUS_ACTIVE;
+ public static int STATUS_INACTIVE;
+ public static int STATUS_UNAVAILABLE;
+ public static int TURN_DEPART;
+ public static int TURN_DESTINATION;
+ public static int TURN_FERRY_BOAT;
+ public static int TURN_FERRY_TRAIN;
+ public static int TURN_FORK;
+ public static int TURN_MERGE;
+ public static int TURN_NAME_CHANGE;
+ public static int TURN_OFF_RAMP;
+ public static int TURN_ON_RAMP;
+ public static int TURN_ROUNDABOUT_ENTER;
+ public static int TURN_ROUNDABOUT_ENTER_AND_EXIT;
+ public static int TURN_ROUNDABOUT_EXIT;
+ public static int TURN_SHARP_TURN;
+ public static int TURN_SIDE_LEFT;
+ public static int TURN_SIDE_RIGHT;
+ public static int TURN_SIDE_UNSPECIFIED;
+ public static int TURN_SLIGHT_TURN;
+ public static int TURN_STRAIGHT;
+ public static int TURN_TURN;
+ public static int TURN_UNKNOWN;
+ public static int TURN_U_TURN;
+}
+
+-keep class android.support.car.navigation.CarNavigationStatusManager$CarNavigationCallback {
+
+ public abstract void onInstrumentClusterStarted(android.support.car.navigation.CarNavigationStatusManager, android.support.car.navigation.CarNavigationInstrumentCluster);
+ public abstract void onInstrumentClusterStopped(android.support.car.navigation.CarNavigationStatusManager);
+
+
+}
+
+-keep class android.util.AndroidException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Exception);
+
+
+
+}
+
+-keep class android.util.AttributeSet {
+
+ public abstract boolean getAttributeBooleanValue(java.lang.String, java.lang.String, boolean);
+ public abstract boolean getAttributeBooleanValue(int, boolean);
+ public abstract int getAttributeCount();
+ public abstract float getAttributeFloatValue(java.lang.String, java.lang.String, float);
+ public abstract float getAttributeFloatValue(int, float);
+ public abstract int getAttributeIntValue(java.lang.String, java.lang.String, int);
+ public abstract int getAttributeIntValue(int, int);
+ public abstract int getAttributeListValue(java.lang.String, java.lang.String, java.lang.String[], int);
+ public abstract int getAttributeListValue(int, java.lang.String[], int);
+ public abstract java.lang.String getAttributeName(int);
+ public abstract int getAttributeNameResource(int);
+ public abstract int getAttributeResourceValue(java.lang.String, java.lang.String, int);
+ public abstract int getAttributeResourceValue(int, int);
+ public abstract int getAttributeUnsignedIntValue(java.lang.String, java.lang.String, int);
+ public abstract int getAttributeUnsignedIntValue(int, int);
+ public abstract java.lang.String getAttributeValue(int);
+ public abstract java.lang.String getAttributeValue(java.lang.String, java.lang.String);
+ public abstract java.lang.String getClassAttribute();
+ public abstract java.lang.String getIdAttribute();
+ public abstract int getIdAttributeResourceValue(int);
+ public abstract java.lang.String getPositionDescription();
+ public abstract int getStyleAttribute();
+
+
+}
+
+-keep class android.util.DisplayMetrics {
+ <init>();
+
+ public boolean equals(java.lang.Object);
+ public boolean equals(android.util.DisplayMetrics);
+ public int hashCode();
+ public void setTo(android.util.DisplayMetrics);
+ public void setToDefaults();
+ public java.lang.String toString();
+
+
+ public static int DENSITY_280;
+ public static int DENSITY_360;
+ public static int DENSITY_400;
+ public static int DENSITY_420;
+ public static int DENSITY_560;
+ public static int DENSITY_DEFAULT;
+ public static int DENSITY_HIGH;
+ public static int DENSITY_LOW;
+ public static int DENSITY_MEDIUM;
+ public static int DENSITY_TV;
+ public static int DENSITY_XHIGH;
+ public static int DENSITY_XXHIGH;
+ public static int DENSITY_XXXHIGH;
+ public float density;
+ public int densityDpi;
+ public int heightPixels;
+ public float scaledDensity;
+ public int widthPixels;
+ public float xdpi;
+ public float ydpi;
+}
+
+-keep class android.util.Pair {
+ <init>(java.lang.Object, java.lang.Object);
+
+ public static android.util.Pair create(java.lang.Object, java.lang.Object);
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+
+
+ public java.lang.Object first;
+ public java.lang.Object second;
+}
+
+-keep class android.util.Printer {
+
+ public abstract void println(java.lang.String);
+
+
+}
+
+-keep class android.util.Size {
+ <init>(int, int);
+
+ public boolean equals(java.lang.Object);
+ public int getHeight();
+ public int getWidth();
+ public int hashCode();
+ public static android.util.Size parseSize(java.lang.String);
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.util.SizeF {
+ <init>(float, float);
+
+ public boolean equals(java.lang.Object);
+ public float getHeight();
+ public float getWidth();
+ public int hashCode();
+ public static android.util.SizeF parseSizeF(java.lang.String);
+ public java.lang.String toString();
+
+
+}
+
+-keep class android.util.SparseArray {
+ <init>();
+ <init>(int);
+
+ public void append(int, java.lang.Object);
+ public void clear();
+ public android.util.SparseArray clone();
+ public java.lang.Object clone();
+ public void delete(int);
+ public java.lang.Object get(int);
+ public java.lang.Object get(int, java.lang.Object);
+ public int indexOfKey(int);
+ public int indexOfValue(java.lang.Object);
+ public int keyAt(int);
+ public void put(int, java.lang.Object);
+ public void remove(int);
+ public void removeAt(int);
+ public void removeAtRange(int, int);
+ public void setValueAt(int, java.lang.Object);
+ public int size();
+ public java.lang.String toString();
+ public java.lang.Object valueAt(int);
+
+
+}
+
+-keep class android.util.SparseBooleanArray {
+ <init>();
+ <init>(int);
+
+ public void append(int, boolean);
+ public void clear();
+ public android.util.SparseBooleanArray clone();
+ public java.lang.Object clone();
+ public void delete(int);
+ public boolean get(int);
+ public boolean get(int, boolean);
+ public int indexOfKey(int);
+ public int indexOfValue(boolean);
+ public int keyAt(int);
+ public void put(int, boolean);
+ public int size();
+ public java.lang.String toString();
+ public boolean valueAt(int);
+
+
+}
+
+-keep class android.util.TypedValue {
+ <init>();
+
+ public static float applyDimension(int, float, android.util.DisplayMetrics);
+ public java.lang.CharSequence coerceToString();
+ public static java.lang.String coerceToString(int, int);
+ public static float complexToDimension(int, android.util.DisplayMetrics);
+ public static int complexToDimensionPixelOffset(int, android.util.DisplayMetrics);
+ public static int complexToDimensionPixelSize(int, android.util.DisplayMetrics);
+ public static float complexToFloat(int);
+ public static float complexToFraction(int, float, float);
+ public int getComplexUnit();
+ public float getDimension(android.util.DisplayMetrics);
+ public float getFloat();
+ public float getFraction(float, float);
+ public void setTo(android.util.TypedValue);
+ public java.lang.String toString();
+
+
+ public static int COMPLEX_MANTISSA_MASK;
+ public static int COMPLEX_MANTISSA_SHIFT;
+ public static int COMPLEX_RADIX_0p23;
+ public static int COMPLEX_RADIX_16p7;
+ public static int COMPLEX_RADIX_23p0;
+ public static int COMPLEX_RADIX_8p15;
+ public static int COMPLEX_RADIX_MASK;
+ public static int COMPLEX_RADIX_SHIFT;
+ public static int COMPLEX_UNIT_DIP;
+ public static int COMPLEX_UNIT_FRACTION;
+ public static int COMPLEX_UNIT_FRACTION_PARENT;
+ public static int COMPLEX_UNIT_IN;
+ public static int COMPLEX_UNIT_MASK;
+ public static int COMPLEX_UNIT_MM;
+ public static int COMPLEX_UNIT_PT;
+ public static int COMPLEX_UNIT_PX;
+ public static int COMPLEX_UNIT_SHIFT;
+ public static int COMPLEX_UNIT_SP;
+ public static int DATA_NULL_EMPTY;
+ public static int DATA_NULL_UNDEFINED;
+ public static int DENSITY_DEFAULT;
+ public static int DENSITY_NONE;
+ public static int TYPE_ATTRIBUTE;
+ public static int TYPE_DIMENSION;
+ public static int TYPE_FIRST_COLOR_INT;
+ public static int TYPE_FIRST_INT;
+ public static int TYPE_FLOAT;
+ public static int TYPE_FRACTION;
+ public static int TYPE_INT_BOOLEAN;
+ public static int TYPE_INT_COLOR_ARGB4;
+ public static int TYPE_INT_COLOR_ARGB8;
+ public static int TYPE_INT_COLOR_RGB4;
+ public static int TYPE_INT_COLOR_RGB8;
+ public static int TYPE_INT_DEC;
+ public static int TYPE_INT_HEX;
+ public static int TYPE_LAST_COLOR_INT;
+ public static int TYPE_LAST_INT;
+ public static int TYPE_NULL;
+ public static int TYPE_REFERENCE;
+ public static int TYPE_STRING;
+ public int assetCookie;
+ public int changingConfigurations;
+ public int data;
+ public int density;
+ public int resourceId;
+ public java.lang.CharSequence string;
+ public int type;
+}
+
+-keep class android.view.Display {
+
+ public long getAppVsyncOffsetNanos();
+ public void getCurrentSizeRange(android.graphics.Point, android.graphics.Point);
+ public int getDisplayId();
+ public int getFlags();
+ public int getHeight();
+ public void getMetrics(android.util.DisplayMetrics);
+ public android.view.Display$Mode getMode();
+ public java.lang.String getName();
+ public int getOrientation();
+ public int getPixelFormat();
+ public long getPresentationDeadlineNanos();
+ public void getRealMetrics(android.util.DisplayMetrics);
+ public void getRealSize(android.graphics.Point);
+ public void getRectSize(android.graphics.Rect);
+ public float getRefreshRate();
+ public int getRotation();
+ public void getSize(android.graphics.Point);
+ public int getState();
+ public android.view.Display$Mode[] getSupportedModes();
+ public float[] getSupportedRefreshRates();
+ public int getWidth();
+ public boolean isValid();
+ public java.lang.String toString();
+
+
+ public static int DEFAULT_DISPLAY;
+ public static int FLAG_PRESENTATION;
+ public static int FLAG_PRIVATE;
+ public static int FLAG_ROUND;
+ public static int FLAG_SECURE;
+ public static int FLAG_SUPPORTS_PROTECTED_BUFFERS;
+ public static int INVALID_DISPLAY;
+ public static int STATE_DOZE;
+ public static int STATE_DOZE_SUSPEND;
+ public static int STATE_OFF;
+ public static int STATE_ON;
+ public static int STATE_UNKNOWN;
+}
+
+-keep class android.view.Display$Mode {
+
+ public int describeContents();
+ public boolean equals(java.lang.Object);
+ public int getModeId();
+ public int getPhysicalHeight();
+ public int getPhysicalWidth();
+ public float getRefreshRate();
+ public int hashCode();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.view.InputDevice {
+
+ public int describeContents();
+ public int getControllerNumber();
+ public java.lang.String getDescriptor();
+ public static android.view.InputDevice getDevice(int);
+ public static int[] getDeviceIds();
+ public int getId();
+ public android.view.KeyCharacterMap getKeyCharacterMap();
+ public int getKeyboardType();
+ public android.view.InputDevice$MotionRange getMotionRange(int);
+ public android.view.InputDevice$MotionRange getMotionRange(int, int);
+ public java.util.List getMotionRanges();
+ public java.lang.String getName();
+ public int getProductId();
+ public int getSources();
+ public int getVendorId();
+ public android.os.Vibrator getVibrator();
+ public boolean[] hasKeys(int[]);
+ public boolean hasMicrophone();
+ public boolean isVirtual();
+ public boolean supportsSource(int);
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int KEYBOARD_TYPE_ALPHABETIC;
+ public static int KEYBOARD_TYPE_NONE;
+ public static int KEYBOARD_TYPE_NON_ALPHABETIC;
+ public static int MOTION_RANGE_ORIENTATION;
+ public static int MOTION_RANGE_PRESSURE;
+ public static int MOTION_RANGE_SIZE;
+ public static int MOTION_RANGE_TOOL_MAJOR;
+ public static int MOTION_RANGE_TOOL_MINOR;
+ public static int MOTION_RANGE_TOUCH_MAJOR;
+ public static int MOTION_RANGE_TOUCH_MINOR;
+ public static int MOTION_RANGE_X;
+ public static int MOTION_RANGE_Y;
+ public static int SOURCE_ANY;
+ public static int SOURCE_BLUETOOTH_STYLUS;
+ public static int SOURCE_CLASS_BUTTON;
+ public static int SOURCE_CLASS_JOYSTICK;
+ public static int SOURCE_CLASS_MASK;
+ public static int SOURCE_CLASS_NONE;
+ public static int SOURCE_CLASS_POINTER;
+ public static int SOURCE_CLASS_POSITION;
+ public static int SOURCE_CLASS_TRACKBALL;
+ public static int SOURCE_DPAD;
+ public static int SOURCE_GAMEPAD;
+ public static int SOURCE_HDMI;
+ public static int SOURCE_JOYSTICK;
+ public static int SOURCE_KEYBOARD;
+ public static int SOURCE_MOUSE;
+ public static int SOURCE_STYLUS;
+ public static int SOURCE_TOUCHPAD;
+ public static int SOURCE_TOUCHSCREEN;
+ public static int SOURCE_TOUCH_NAVIGATION;
+ public static int SOURCE_TRACKBALL;
+ public static int SOURCE_UNKNOWN;
+}
+
+-keep class android.view.InputDevice$MotionRange {
+
+ public int getAxis();
+ public float getFlat();
+ public float getFuzz();
+ public float getMax();
+ public float getMin();
+ public float getRange();
+ public float getResolution();
+ public int getSource();
+ public boolean isFromSource(int);
+
+
+}
+
+-keep class android.view.InputEvent {
+
+ public int describeContents();
+ public android.view.InputDevice getDevice();
+ public abstract int getDeviceId();
+ public abstract long getEventTime();
+ public abstract int getSource();
+ public boolean isFromSource(int);
+
+
+ public static android.os.Parcelable$Creator CREATOR;
+}
+
+-keep class android.view.KeyCharacterMap {
+
+ public int describeContents();
+ public static boolean deviceHasKey(int);
+ public static boolean[] deviceHasKeys(int[]);
+ protected void finalize();
+ public int get(int, int);
+ public static int getDeadChar(int, int);
+ public char getDisplayLabel(int);
+ public android.view.KeyEvent[] getEvents(char[]);
+ public boolean getKeyData(int, android.view.KeyCharacterMap$KeyData);
+ public int getKeyboardType();
+ public char getMatch(int, char[]);
+ public char getMatch(int, char[], int);
+ public int getModifierBehavior();
+ public char getNumber(int);
+ public boolean isPrintingKey(int);
+ public static android.view.KeyCharacterMap load(int);
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static int ALPHA;
+ public static int BUILT_IN_KEYBOARD;
+ public static int COMBINING_ACCENT;
+ public static int COMBINING_ACCENT_MASK;
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FULL;
+ public static char HEX_INPUT;
+ public static int MODIFIER_BEHAVIOR_CHORDED;
+ public static int MODIFIER_BEHAVIOR_CHORDED_OR_TOGGLED;
+ public static int NUMERIC;
+ public static char PICKER_DIALOG_INPUT;
+ public static int PREDICTIVE;
+ public static int SPECIAL_FUNCTION;
+ public static int VIRTUAL_KEYBOARD;
+}
+
+-keep class android.view.KeyCharacterMap$KeyData {
+ <init>();
+
+
+
+ public static int META_LENGTH;
+ public char displayLabel;
+ public char[] meta;
+ public char number;
+}
+
+-keep class android.view.KeyEvent {
+ <init>(int, int);
+ <init>(long, long, int, int, int);
+ <init>(long, long, int, int, int, int);
+ <init>(long, long, int, int, int, int, int, int);
+ <init>(long, long, int, int, int, int, int, int, int);
+ <init>(long, long, int, int, int, int, int, int, int, int);
+ <init>(long, java.lang.String, int, int);
+ <init>(android.view.KeyEvent);
+ <init>(android.view.KeyEvent, long, int);
+
+ public static android.view.KeyEvent changeAction(android.view.KeyEvent, int);
+ public static android.view.KeyEvent changeFlags(android.view.KeyEvent, int);
+ public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int);
+ public static android.view.KeyEvent changeTimeRepeat(android.view.KeyEvent, long, int, int);
+ public boolean dispatch(android.view.KeyEvent$Callback);
+ public boolean dispatch(android.view.KeyEvent$Callback, android.view.KeyEvent$DispatcherState, java.lang.Object);
+ public int getAction();
+ public java.lang.String getCharacters();
+ public static int getDeadChar(int, int);
+ public int getDeviceId();
+ public char getDisplayLabel();
+ public long getDownTime();
+ public long getEventTime();
+ public int getFlags();
+ public android.view.KeyCharacterMap getKeyCharacterMap();
+ public int getKeyCode();
+ public boolean getKeyData(android.view.KeyCharacterMap$KeyData);
+ public char getMatch(char[]);
+ public char getMatch(char[], int);
+ public static int getMaxKeyCode();
+ public int getMetaState();
+ public static int getModifierMetaStateMask();
+ public int getModifiers();
+ public char getNumber();
+ public int getRepeatCount();
+ public int getScanCode();
+ public int getSource();
+ public int getUnicodeChar();
+ public int getUnicodeChar(int);
+ public boolean hasModifiers(int);
+ public boolean hasNoModifiers();
+ public boolean isAltPressed();
+ public boolean isCanceled();
+ public boolean isCapsLockOn();
+ public boolean isCtrlPressed();
+ public boolean isFunctionPressed();
+ public static boolean isGamepadButton(int);
+ public boolean isLongPress();
+ public boolean isMetaPressed();
+ public static boolean isModifierKey(int);
+ public boolean isNumLockOn();
+ public boolean isPrintingKey();
+ public boolean isScrollLockOn();
+ public boolean isShiftPressed();
+ public boolean isSymPressed();
+ public boolean isSystem();
+ public boolean isTracking();
+ public static int keyCodeFromString(java.lang.String);
+ public static java.lang.String keyCodeToString(int);
+ public static boolean metaStateHasModifiers(int, int);
+ public static boolean metaStateHasNoModifiers(int);
+ public static int normalizeMetaState(int);
+ public void setSource(int);
+ public void startTracking();
+ public java.lang.String toString();
+ public void writeToParcel(android.os.Parcel, int);
+
+
+ public static int ACTION_DOWN;
+ public static int ACTION_MULTIPLE;
+ public static int ACTION_UP;
+ public static android.os.Parcelable$Creator CREATOR;
+ public static int FLAG_CANCELED;
+ public static int FLAG_CANCELED_LONG_PRESS;
+ public static int FLAG_EDITOR_ACTION;
+ public static int FLAG_FALLBACK;
+ public static int FLAG_FROM_SYSTEM;
+ public static int FLAG_KEEP_TOUCH_MODE;
+ public static int FLAG_LONG_PRESS;
+ public static int FLAG_SOFT_KEYBOARD;
+ public static int FLAG_TRACKING;
+ public static int FLAG_VIRTUAL_HARD_KEY;
+ public static int FLAG_WOKE_HERE;
+ public static int KEYCODE_0;
+ public static int KEYCODE_1;
+ public static int KEYCODE_11;
+ public static int KEYCODE_12;
+ public static int KEYCODE_2;
+ public static int KEYCODE_3;
+ public static int KEYCODE_3D_MODE;
+ public static int KEYCODE_4;
+ public static int KEYCODE_5;
+ public static int KEYCODE_6;
+ public static int KEYCODE_7;
+ public static int KEYCODE_8;
+ public static int KEYCODE_9;
+ public static int KEYCODE_A;
+ public static int KEYCODE_ALT_LEFT;
+ public static int KEYCODE_ALT_RIGHT;
+ public static int KEYCODE_APOSTROPHE;
+ public static int KEYCODE_APP_SWITCH;
+ public static int KEYCODE_ASSIST;
+ public static int KEYCODE_AT;
+ public static int KEYCODE_AVR_INPUT;
+ public static int KEYCODE_AVR_POWER;
+ public static int KEYCODE_B;
+ public static int KEYCODE_BACK;
+ public static int KEYCODE_BACKSLASH;
+ public static int KEYCODE_BOOKMARK;
+ public static int KEYCODE_BREAK;
+ public static int KEYCODE_BRIGHTNESS_DOWN;
+ public static int KEYCODE_BRIGHTNESS_UP;
+ public static int KEYCODE_BUTTON_1;
+ public static int KEYCODE_BUTTON_10;
+ public static int KEYCODE_BUTTON_11;
+ public static int KEYCODE_BUTTON_12;
+ public static int KEYCODE_BUTTON_13;
+ public static int KEYCODE_BUTTON_14;
+ public static int KEYCODE_BUTTON_15;
+ public static int KEYCODE_BUTTON_16;
+ public static int KEYCODE_BUTTON_2;
+ public static int KEYCODE_BUTTON_3;
+ public static int KEYCODE_BUTTON_4;
+ public static int KEYCODE_BUTTON_5;
+ public static int KEYCODE_BUTTON_6;
+ public static int KEYCODE_BUTTON_7;
+ public static int KEYCODE_BUTTON_8;
+ public static int KEYCODE_BUTTON_9;
+ public static int KEYCODE_BUTTON_A;
+ public static int KEYCODE_BUTTON_B;
+ public static int KEYCODE_BUTTON_C;
+ public static int KEYCODE_BUTTON_L1;
+ public static int KEYCODE_BUTTON_L2;
+ public static int KEYCODE_BUTTON_MODE;
+ public static int KEYCODE_BUTTON_R1;
+ public static int KEYCODE_BUTTON_R2;
+ public static int KEYCODE_BUTTON_SELECT;
+ public static int KEYCODE_BUTTON_START;
+ public static int KEYCODE_BUTTON_THUMBL;
+ public static int KEYCODE_BUTTON_THUMBR;
+ public static int KEYCODE_BUTTON_X;
+ public static int KEYCODE_BUTTON_Y;
+ public static int KEYCODE_BUTTON_Z;
+ public static int KEYCODE_C;
+ public static int KEYCODE_CALCULATOR;
+ public static int KEYCODE_CALENDAR;
+ public static int KEYCODE_CALL;
+ public static int KEYCODE_CAMERA;
+ public static int KEYCODE_CAPS_LOCK;
+ public static int KEYCODE_CAPTIONS;
+ public static int KEYCODE_CHANNEL_DOWN;
+ public static int KEYCODE_CHANNEL_UP;
+ public static int KEYCODE_CLEAR;
+ public static int KEYCODE_COMMA;
+ public static int KEYCODE_CONTACTS;
+ public static int KEYCODE_CTRL_LEFT;
+ public static int KEYCODE_CTRL_RIGHT;
+ public static int KEYCODE_D;
+ public static int KEYCODE_DEL;
+ public static int KEYCODE_DPAD_CENTER;
+ public static int KEYCODE_DPAD_DOWN;
+ public static int KEYCODE_DPAD_LEFT;
+ public static int KEYCODE_DPAD_RIGHT;
+ public static int KEYCODE_DPAD_UP;
+ public static int KEYCODE_DVR;
+ public static int KEYCODE_E;
+ public static int KEYCODE_EISU;
+ public static int KEYCODE_ENDCALL;
+ public static int KEYCODE_ENTER;
+ public static int KEYCODE_ENVELOPE;
+ public static int KEYCODE_EQUALS;
+ public static int KEYCODE_ESCAPE;
+ public static int KEYCODE_EXPLORER;
+ public static int KEYCODE_F;
+ public static int KEYCODE_F1;
+ public static int KEYCODE_F10;
+ public static int KEYCODE_F11;
+ public static int KEYCODE_F12;
+ public static int KEYCODE_F2;
+ public static int KEYCODE_F3;
+ public static int KEYCODE_F4;
+ public static int KEYCODE_F5;
+ public static int KEYCODE_F6;
+ public static int KEYCODE_F7;
+ public static int KEYCODE_F8;
+ public static int KEYCODE_F9;
+ public static int KEYCODE_FOCUS;
+ public static int KEYCODE_FORWARD;
+ public static int KEYCODE_FORWARD_DEL;
+ public static int KEYCODE_FUNCTION;
+ public static int KEYCODE_G;
+ public static int KEYCODE_GRAVE;
+ public static int KEYCODE_GUIDE;
+ public static int KEYCODE_H;
+ public static int KEYCODE_HEADSETHOOK;
+ public static int KEYCODE_HELP;
+ public static int KEYCODE_HENKAN;
+ public static int KEYCODE_HOME;
+ public static int KEYCODE_I;
+ public static int KEYCODE_INFO;
+ public static int KEYCODE_INSERT;
+ public static int KEYCODE_J;
+ public static int KEYCODE_K;
+ public static int KEYCODE_KANA;
+ public static int KEYCODE_KATAKANA_HIRAGANA;
+ public static int KEYCODE_L;
+ public static int KEYCODE_LANGUAGE_SWITCH;
+ public static int KEYCODE_LAST_CHANNEL;
+ public static int KEYCODE_LEFT_BRACKET;
+ public static int KEYCODE_M;
+ public static int KEYCODE_MANNER_MODE;
+ public static int KEYCODE_MEDIA_AUDIO_TRACK;
+ public static int KEYCODE_MEDIA_CLOSE;
+ public static int KEYCODE_MEDIA_EJECT;
+ public static int KEYCODE_MEDIA_FAST_FORWARD;
+ public static int KEYCODE_MEDIA_NEXT;
+ public static int KEYCODE_MEDIA_PAUSE;
+ public static int KEYCODE_MEDIA_PLAY;
+ public static int KEYCODE_MEDIA_PLAY_PAUSE;
+ public static int KEYCODE_MEDIA_PREVIOUS;
+ public static int KEYCODE_MEDIA_RECORD;
+ public static int KEYCODE_MEDIA_REWIND;
+ public static int KEYCODE_MEDIA_SKIP_BACKWARD;
+ public static int KEYCODE_MEDIA_SKIP_FORWARD;
+ public static int KEYCODE_MEDIA_STEP_BACKWARD;
+ public static int KEYCODE_MEDIA_STEP_FORWARD;
+ public static int KEYCODE_MEDIA_STOP;
+ public static int KEYCODE_MEDIA_TOP_MENU;
+ public static int KEYCODE_MENU;
+ public static int KEYCODE_META_LEFT;
+ public static int KEYCODE_META_RIGHT;
+ public static int KEYCODE_MINUS;
+ public static int KEYCODE_MOVE_END;
+ public static int KEYCODE_MOVE_HOME;
+ public static int KEYCODE_MUHENKAN;
+ public static int KEYCODE_MUSIC;
+ public static int KEYCODE_MUTE;
+ public static int KEYCODE_N;
+ public static int KEYCODE_NAVIGATE_IN;
+ public static int KEYCODE_NAVIGATE_NEXT;
+ public static int KEYCODE_NAVIGATE_OUT;
+ public static int KEYCODE_NAVIGATE_PREVIOUS;
+ public static int KEYCODE_NOTIFICATION;
+ public static int KEYCODE_NUM;
+ public static int KEYCODE_NUMPAD_0;
+ public static int KEYCODE_NUMPAD_1;
+ public static int KEYCODE_NUMPAD_2;
+ public static int KEYCODE_NUMPAD_3;
+ public static int KEYCODE_NUMPAD_4;
+ public static int KEYCODE_NUMPAD_5;
+ public static int KEYCODE_NUMPAD_6;
+ public static int KEYCODE_NUMPAD_7;
+ public static int KEYCODE_NUMPAD_8;
+ public static int KEYCODE_NUMPAD_9;
+ public static int KEYCODE_NUMPAD_ADD;
+ public static int KEYCODE_NUMPAD_COMMA;
+ public static int KEYCODE_NUMPAD_DIVIDE;
+ public static int KEYCODE_NUMPAD_DOT;
+ public static int KEYCODE_NUMPAD_ENTER;
+ public static int KEYCODE_NUMPAD_EQUALS;
+ public static int KEYCODE_NUMPAD_LEFT_PAREN;
+ public static int KEYCODE_NUMPAD_MULTIPLY;
+ public static int KEYCODE_NUMPAD_RIGHT_PAREN;
+ public static int KEYCODE_NUMPAD_SUBTRACT;
+ public static int KEYCODE_NUM_LOCK;
+ public static int KEYCODE_O;
+ public static int KEYCODE_P;
+ public static int KEYCODE_PAGE_DOWN;
+ public static int KEYCODE_PAGE_UP;
+ public static int KEYCODE_PAIRING;
+ public static int KEYCODE_PERIOD;
+ public static int KEYCODE_PICTSYMBOLS;
+ public static int KEYCODE_PLUS;
+ public static int KEYCODE_POUND;
+ public static int KEYCODE_POWER;
+ public static int KEYCODE_PROG_BLUE;
+ public static int KEYCODE_PROG_GREEN;
+ public static int KEYCODE_PROG_RED;
+ public static int KEYCODE_PROG_YELLOW;
+ public static int KEYCODE_Q;
+ public static int KEYCODE_R;
+ public static int KEYCODE_RIGHT_BRACKET;
+ public static int KEYCODE_RO;
+ public static int KEYCODE_S;
+ public static int KEYCODE_SCROLL_LOCK;
+ public static int KEYCODE_SEARCH;
+ public static int KEYCODE_SEMICOLON;
+ public static int KEYCODE_SETTINGS;
+ public static int KEYCODE_SHIFT_LEFT;
+ public static int KEYCODE_SHIFT_RIGHT;
+ public static int KEYCODE_SLASH;
+ public static int KEYCODE_SLEEP;
+ public static int KEYCODE_SOFT_LEFT;
+ public static int KEYCODE_SOFT_RIGHT;
+ public static int KEYCODE_SPACE;
+ public static int KEYCODE_STAR;
+ public static int KEYCODE_STB_INPUT;
+ public static int KEYCODE_STB_POWER;
+ public static int KEYCODE_SWITCH_CHARSET;
+ public static int KEYCODE_SYM;
+ public static int KEYCODE_SYSRQ;
+ public static int KEYCODE_T;
+ public static int KEYCODE_TAB;
+ public static int KEYCODE_TV;
+ public static int KEYCODE_TV_ANTENNA_CABLE;
+ public static int KEYCODE_TV_AUDIO_DESCRIPTION;
+ public static int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_DOWN;
+ public static int KEYCODE_TV_AUDIO_DESCRIPTION_MIX_UP;
+ public static int KEYCODE_TV_CONTENTS_MENU;
+ public static int KEYCODE_TV_DATA_SERVICE;
+ public static int KEYCODE_TV_INPUT;
+ public static int KEYCODE_TV_INPUT_COMPONENT_1;
+ public static int KEYCODE_TV_INPUT_COMPONENT_2;
+ public static int KEYCODE_TV_INPUT_COMPOSITE_1;
+ public static int KEYCODE_TV_INPUT_COMPOSITE_2;
+ public static int KEYCODE_TV_INPUT_HDMI_1;
+ public static int KEYCODE_TV_INPUT_HDMI_2;
+ public static int KEYCODE_TV_INPUT_HDMI_3;
+ public static int KEYCODE_TV_INPUT_HDMI_4;
+ public static int KEYCODE_TV_INPUT_VGA_1;
+ public static int KEYCODE_TV_MEDIA_CONTEXT_MENU;
+ public static int KEYCODE_TV_NETWORK;
+ public static int KEYCODE_TV_NUMBER_ENTRY;
+ public static int KEYCODE_TV_POWER;
+ public static int KEYCODE_TV_RADIO_SERVICE;
+ public static int KEYCODE_TV_SATELLITE;
+ public static int KEYCODE_TV_SATELLITE_BS;
+ public static int KEYCODE_TV_SATELLITE_CS;
+ public static int KEYCODE_TV_SATELLITE_SERVICE;
+ public static int KEYCODE_TV_TELETEXT;
+ public static int KEYCODE_TV_TERRESTRIAL_ANALOG;
+ public static int KEYCODE_TV_TERRESTRIAL_DIGITAL;
+ public static int KEYCODE_TV_TIMER_PROGRAMMING;
+ public static int KEYCODE_TV_ZOOM_MODE;
+ public static int KEYCODE_U;
+ public static int KEYCODE_UNKNOWN;
+ public static int KEYCODE_V;
+ public static int KEYCODE_VOICE_ASSIST;
+ public static int KEYCODE_VOLUME_DOWN;
+ public static int KEYCODE_VOLUME_MUTE;
+ public static int KEYCODE_VOLUME_UP;
+ public static int KEYCODE_W;
+ public static int KEYCODE_WAKEUP;
+ public static int KEYCODE_WINDOW;
+ public static int KEYCODE_X;
+ public static int KEYCODE_Y;
+ public static int KEYCODE_YEN;
+ public static int KEYCODE_Z;
+ public static int KEYCODE_ZENKAKU_HANKAKU;
+ public static int KEYCODE_ZOOM_IN;
+ public static int KEYCODE_ZOOM_OUT;
+ public static int MAX_KEYCODE;
+ public static int META_ALT_LEFT_ON;
+ public static int META_ALT_MASK;
+ public static int META_ALT_ON;
+ public static int META_ALT_RIGHT_ON;
+ public static int META_CAPS_LOCK_ON;
+ public static int META_CTRL_LEFT_ON;
+ public static int META_CTRL_MASK;
+ public static int META_CTRL_ON;
+ public static int META_CTRL_RIGHT_ON;
+ public static int META_FUNCTION_ON;
+ public static int META_META_LEFT_ON;
+ public static int META_META_MASK;
+ public static int META_META_ON;
+ public static int META_META_RIGHT_ON;
+ public static int META_NUM_LOCK_ON;
+ public static int META_SCROLL_LOCK_ON;
+ public static int META_SHIFT_LEFT_ON;
+ public static int META_SHIFT_MASK;
+ public static int META_SHIFT_ON;
+ public static int META_SHIFT_RIGHT_ON;
+ public static int META_SYM_ON;
+}
+
+-keep class android.view.KeyEvent$Callback {
+
+ public abstract boolean onKeyDown(int, android.view.KeyEvent);
+ public abstract boolean onKeyLongPress(int, android.view.KeyEvent);
+ public abstract boolean onKeyMultiple(int, int, android.view.KeyEvent);
+ public abstract boolean onKeyUp(int, android.view.KeyEvent);
+
+
+}
+
+-keep class android.view.KeyEvent$DispatcherState {
+ <init>();
+
+ public void handleUpEvent(android.view.KeyEvent);
+ public boolean isTracking(android.view.KeyEvent);
+ public void performedLongPress(android.view.KeyEvent);
+ public void reset();
+ public void reset(java.lang.Object);
+ public void startTracking(android.view.KeyEvent, java.lang.Object);
+
+
+}
+
+-keep class java.io.File {
+ <init>(java.io.File, java.lang.String);
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.String);
+ <init>(java.net.URI);
+
+ public boolean canExecute();
+ public boolean canRead();
+ public boolean canWrite();
+ public int compareTo(java.io.File);
+ public int compareTo(java.lang.Object);
+ public boolean createNewFile();
+ public static java.io.File createTempFile(java.lang.String, java.lang.String);
+ public static java.io.File createTempFile(java.lang.String, java.lang.String, java.io.File);
+ public boolean delete();
+ public void deleteOnExit();
+ public boolean equals(java.lang.Object);
+ public boolean exists();
+ public java.io.File getAbsoluteFile();
+ public java.lang.String getAbsolutePath();
+ public java.io.File getCanonicalFile();
+ public java.lang.String getCanonicalPath();
+ public long getFreeSpace();
+ public java.lang.String getName();
+ public java.lang.String getParent();
+ public java.io.File getParentFile();
+ public java.lang.String getPath();
+ public long getTotalSpace();
+ public long getUsableSpace();
+ public int hashCode();
+ public boolean isAbsolute();
+ public boolean isDirectory();
+ public boolean isFile();
+ public boolean isHidden();
+ public long lastModified();
+ public long length();
+ public java.lang.String[] list();
+ public java.lang.String[] list(java.io.FilenameFilter);
+ public java.io.File[] listFiles();
+ public java.io.File[] listFiles(java.io.FilenameFilter);
+ public java.io.File[] listFiles(java.io.FileFilter);
+ public static java.io.File[] listRoots();
+ public boolean mkdir();
+ public boolean mkdirs();
+ public boolean renameTo(java.io.File);
+ public boolean setExecutable(boolean, boolean);
+ public boolean setExecutable(boolean);
+ public boolean setLastModified(long);
+ public boolean setReadOnly();
+ public boolean setReadable(boolean, boolean);
+ public boolean setReadable(boolean);
+ public boolean setWritable(boolean, boolean);
+ public boolean setWritable(boolean);
+ public java.lang.String toString();
+ public java.net.URI toURI();
+ public java.net.URL toURL();
+
+
+ public static java.lang.String pathSeparator;
+ public static char pathSeparatorChar;
+ public static java.lang.String separator;
+ public static char separatorChar;
+}
+
+-keep class java.io.FileDescriptor {
+ <init>();
+
+ public void sync();
+ public java.lang.String toString();
+ public boolean valid();
+
+
+ public static java.io.FileDescriptor err;
+ public static java.io.FileDescriptor in;
+ public static java.io.FileDescriptor out;
+}
+
+-keep class java.io.FileFilter {
+
+ public abstract boolean accept(java.io.File);
+
+
+}
+
+-keep class java.io.FileInputStream {
+ <init>(java.io.File);
+ <init>(java.io.FileDescriptor);
+ <init>(java.lang.String);
+
+ public int available();
+ public void close();
+ protected void finalize();
+ public java.nio.channels.FileChannel getChannel();
+ public java.io.FileDescriptor getFD();
+ public int read();
+ public int read(byte[], int, int);
+ public long skip(long);
+
+
+}
+
+-keep class java.io.FileNotFoundException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.io.FileOutputStream {
+ <init>(java.io.File);
+ <init>(java.io.File, boolean);
+ <init>(java.io.FileDescriptor);
+ <init>(java.lang.String);
+ <init>(java.lang.String, boolean);
+
+ public void close();
+ protected void finalize();
+ public java.nio.channels.FileChannel getChannel();
+ public java.io.FileDescriptor getFD();
+ public void write(byte[], int, int);
+ public void write(int);
+
+
+}
+
+-keep class java.io.FilenameFilter {
+
+ public abstract boolean accept(java.io.File, java.lang.String);
+
+
+}
+
+-keep class java.io.FilterOutputStream {
+ <init>(java.io.OutputStream);
+
+ public void close();
+ public void flush();
+ public void write(byte[], int, int);
+ public void write(int);
+
+
+ protected java.io.OutputStream out;
+}
+
+-keep class java.io.IOException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.io.InputStream {
+ <init>();
+
+ public int available();
+ public void close();
+ public void mark(int);
+ public boolean markSupported();
+ public abstract int read();
+ public int read(byte[]);
+ public int read(byte[], int, int);
+ public synchronized void reset();
+ public long skip(long);
+
+
+}
+
+-keep class java.io.ObjectStreamException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.io.OutputStream {
+ <init>();
+
+ public void close();
+ public void flush();
+ public void write(byte[]);
+ public void write(byte[], int, int);
+ public abstract void write(int);
+
+
+}
+
+-keep class java.io.PrintStream {
+ <init>(java.io.OutputStream);
+ <init>(java.io.OutputStream, boolean);
+ <init>(java.io.OutputStream, boolean, java.lang.String);
+ <init>(java.io.File);
+ <init>(java.io.File, java.lang.String);
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.String);
+
+ public java.io.PrintStream append(char);
+ public java.io.PrintStream append(java.lang.CharSequence);
+ public java.io.PrintStream append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence);
+ public java.lang.Appendable append(char);
+ public boolean checkError();
+ protected void clearError();
+ public synchronized void close();
+ public synchronized void flush();
+ public java.io.PrintStream format(java.lang.String, java.lang.Object[]);
+ public java.io.PrintStream format(java.util.Locale, java.lang.String, java.lang.Object[]);
+ public void print(char[]);
+ public void print(char);
+ public void print(double);
+ public void print(float);
+ public void print(int);
+ public void print(long);
+ public void print(java.lang.Object);
+ public synchronized void print(java.lang.String);
+ public void print(boolean);
+ public java.io.PrintStream printf(java.lang.String, java.lang.Object[]);
+ public java.io.PrintStream printf(java.util.Locale, java.lang.String, java.lang.Object[]);
+ public void println();
+ public void println(char[]);
+ public void println(char);
+ public void println(double);
+ public void println(float);
+ public void println(int);
+ public void println(long);
+ public void println(java.lang.Object);
+ public synchronized void println(java.lang.String);
+ public void println(boolean);
+ protected void setError();
+ public void write(byte[], int, int);
+ public synchronized void write(int);
+
+
+}
+
+-keep class java.io.PrintWriter {
+ <init>(java.io.OutputStream);
+ <init>(java.io.OutputStream, boolean);
+ <init>(java.io.Writer);
+ <init>(java.io.Writer, boolean);
+ <init>(java.io.File);
+ <init>(java.io.File, java.lang.String);
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.String);
+
+ public java.io.PrintWriter append(char);
+ public java.io.PrintWriter append(java.lang.CharSequence);
+ public java.io.PrintWriter append(java.lang.CharSequence, int, int);
+ public java.io.Writer append(java.lang.CharSequence, int, int);
+ public java.io.Writer append(java.lang.CharSequence);
+ public java.io.Writer append(char);
+ public java.lang.Appendable append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence);
+ public java.lang.Appendable append(char);
+ public boolean checkError();
+ protected void clearError();
+ public void close();
+ public void flush();
+ public java.io.PrintWriter format(java.lang.String, java.lang.Object[]);
+ public java.io.PrintWriter format(java.util.Locale, java.lang.String, java.lang.Object[]);
+ public void print(char[]);
+ public void print(char);
+ public void print(double);
+ public void print(float);
+ public void print(int);
+ public void print(long);
+ public void print(java.lang.Object);
+ public void print(java.lang.String);
+ public void print(boolean);
+ public java.io.PrintWriter printf(java.lang.String, java.lang.Object[]);
+ public java.io.PrintWriter printf(java.util.Locale, java.lang.String, java.lang.Object[]);
+ public void println();
+ public void println(char[]);
+ public void println(char);
+ public void println(double);
+ public void println(float);
+ public void println(int);
+ public void println(long);
+ public void println(java.lang.Object);
+ public void println(java.lang.String);
+ public void println(boolean);
+ protected void setError();
+ public void write(char[]);
+ public void write(char[], int, int);
+ public void write(int);
+ public void write(java.lang.String);
+ public void write(java.lang.String, int, int);
+
+
+ protected java.io.Writer out;
+}
+
+-keep class java.io.Reader {
+ <init>();
+ <init>(java.lang.Object);
+
+ public abstract void close();
+ public void mark(int);
+ public boolean markSupported();
+ public int read();
+ public int read(char[]);
+ public abstract int read(char[], int, int);
+ public int read(java.nio.CharBuffer);
+ public boolean ready();
+ public void reset();
+ public long skip(long);
+
+
+ protected java.lang.Object lock;
+}
+
+-keep class java.io.Serializable {
+
+
+
+}
+
+-keep class java.io.SyncFailedException {
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.io.UnsupportedEncodingException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.io.Writer {
+ <init>();
+ <init>(java.lang.Object);
+
+ public java.io.Writer append(char);
+ public java.io.Writer append(java.lang.CharSequence);
+ public java.io.Writer append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence);
+ public java.lang.Appendable append(char);
+ public abstract void close();
+ public abstract void flush();
+ public void write(char[]);
+ public abstract void write(char[], int, int);
+ public void write(int);
+ public void write(java.lang.String);
+ public void write(java.lang.String, int, int);
+
+
+ protected java.lang.Object lock;
+}
+
+-keep class java.lang.AbstractStringBuilder {
+
+ public int capacity();
+ public char charAt(int);
+ public int codePointAt(int);
+ public int codePointBefore(int);
+ public int codePointCount(int, int);
+ public void ensureCapacity(int);
+ public void getChars(int, int, char[], int);
+ public int indexOf(java.lang.String);
+ public int indexOf(java.lang.String, int);
+ public int lastIndexOf(java.lang.String);
+ public int lastIndexOf(java.lang.String, int);
+ public int length();
+ public int offsetByCodePoints(int, int);
+ public void setCharAt(int, char);
+ public void setLength(int);
+ public java.lang.CharSequence subSequence(int, int);
+ public java.lang.String substring(int);
+ public java.lang.String substring(int, int);
+ public java.lang.String toString();
+ public void trimToSize();
+
+
+}
+
+-keep class java.lang.Appendable {
+
+ public abstract java.lang.Appendable append(char);
+ public abstract java.lang.Appendable append(java.lang.CharSequence);
+ public abstract java.lang.Appendable append(java.lang.CharSequence, int, int);
+
+
+}
+
+-keep class java.lang.Boolean {
+ <init>(java.lang.String);
+ <init>(boolean);
+
+ public boolean booleanValue();
+ public static int compare(boolean, boolean);
+ public int compareTo(java.lang.Boolean);
+ public int compareTo(java.lang.Object);
+ public boolean equals(java.lang.Object);
+ public static boolean getBoolean(java.lang.String);
+ public int hashCode();
+ public static boolean parseBoolean(java.lang.String);
+ public java.lang.String toString();
+ public static java.lang.String toString(boolean);
+ public static java.lang.Boolean valueOf(java.lang.String);
+ public static java.lang.Boolean valueOf(boolean);
+
+
+ public static java.lang.Boolean FALSE;
+ public static java.lang.Boolean TRUE;
+ public static java.lang.Class TYPE;
+}
+
+-keep class java.lang.Byte {
+ <init>(byte);
+ <init>(java.lang.String);
+
+ public byte byteValue();
+ public static int compare(byte, byte);
+ public int compareTo(java.lang.Byte);
+ public int compareTo(java.lang.Object);
+ public static java.lang.Byte decode(java.lang.String);
+ public double doubleValue();
+ public boolean equals(java.lang.Object);
+ public float floatValue();
+ public int hashCode();
+ public int intValue();
+ public long longValue();
+ public static byte parseByte(java.lang.String);
+ public static byte parseByte(java.lang.String, int);
+ public short shortValue();
+ public java.lang.String toString();
+ public static java.lang.String toString(byte);
+ public static java.lang.Byte valueOf(java.lang.String);
+ public static java.lang.Byte valueOf(java.lang.String, int);
+ public static java.lang.Byte valueOf(byte);
+
+
+ public static byte MAX_VALUE;
+ public static byte MIN_VALUE;
+ public static int SIZE;
+ public static java.lang.Class TYPE;
+}
+
+-keep class java.lang.CharSequence {
+
+ public abstract char charAt(int);
+ public abstract int length();
+ public abstract java.lang.CharSequence subSequence(int, int);
+ public abstract java.lang.String toString();
+
+
+}
+
+-keep class java.lang.Character {
+ <init>(char);
+
+ public static int charCount(int);
+ public char charValue();
+ public static int codePointAt(java.lang.CharSequence, int);
+ public static int codePointAt(char[], int);
+ public static int codePointAt(char[], int, int);
+ public static int codePointBefore(java.lang.CharSequence, int);
+ public static int codePointBefore(char[], int);
+ public static int codePointBefore(char[], int, int);
+ public static int codePointCount(java.lang.CharSequence, int, int);
+ public static int codePointCount(char[], int, int);
+ public static int compare(char, char);
+ public int compareTo(java.lang.Character);
+ public int compareTo(java.lang.Object);
+ public static int digit(char, int);
+ public static int digit(int, int);
+ public boolean equals(java.lang.Object);
+ public static char forDigit(int, int);
+ public static byte getDirectionality(char);
+ public static byte getDirectionality(int);
+ public static java.lang.String getName(int);
+ public static int getNumericValue(char);
+ public static int getNumericValue(int);
+ public static int getType(char);
+ public static int getType(int);
+ public int hashCode();
+ public static char highSurrogate(int);
+ public static boolean isAlphabetic(int);
+ public static boolean isBmpCodePoint(int);
+ public static boolean isDefined(char);
+ public static boolean isDefined(int);
+ public static boolean isDigit(char);
+ public static boolean isDigit(int);
+ public static boolean isHighSurrogate(char);
+ public static boolean isISOControl(char);
+ public static boolean isISOControl(int);
+ public static boolean isIdentifierIgnorable(char);
+ public static boolean isIdentifierIgnorable(int);
+ public static boolean isIdeographic(int);
+ public static boolean isJavaIdentifierPart(char);
+ public static boolean isJavaIdentifierPart(int);
+ public static boolean isJavaIdentifierStart(char);
+ public static boolean isJavaIdentifierStart(int);
+ public static boolean isJavaLetter(char);
+ public static boolean isJavaLetterOrDigit(char);
+ public static boolean isLetter(char);
+ public static boolean isLetter(int);
+ public static boolean isLetterOrDigit(char);
+ public static boolean isLetterOrDigit(int);
+ public static boolean isLowSurrogate(char);
+ public static boolean isLowerCase(char);
+ public static boolean isLowerCase(int);
+ public static boolean isMirrored(char);
+ public static boolean isMirrored(int);
+ public static boolean isSpace(char);
+ public static boolean isSpaceChar(char);
+ public static boolean isSpaceChar(int);
+ public static boolean isSupplementaryCodePoint(int);
+ public static boolean isSurrogate(char);
+ public static boolean isSurrogatePair(char, char);
+ public static boolean isTitleCase(char);
+ public static boolean isTitleCase(int);
+ public static boolean isUnicodeIdentifierPart(char);
+ public static boolean isUnicodeIdentifierPart(int);
+ public static boolean isUnicodeIdentifierStart(char);
+ public static boolean isUnicodeIdentifierStart(int);
+ public static boolean isUpperCase(char);
+ public static boolean isUpperCase(int);
+ public static boolean isValidCodePoint(int);
+ public static boolean isWhitespace(char);
+ public static boolean isWhitespace(int);
+ public static char lowSurrogate(int);
+ public static int offsetByCodePoints(java.lang.CharSequence, int, int);
+ public static int offsetByCodePoints(char[], int, int, int, int);
+ public static char reverseBytes(char);
+ public static int toChars(int, char[], int);
+ public static char[] toChars(int);
+ public static int toCodePoint(char, char);
+ public static char toLowerCase(char);
+ public static int toLowerCase(int);
+ public java.lang.String toString();
+ public static java.lang.String toString(char);
+ public static char toTitleCase(char);
+ public static int toTitleCase(int);
+ public static char toUpperCase(char);
+ public static int toUpperCase(int);
+ public static java.lang.Character valueOf(char);
+
+
+ public static byte COMBINING_SPACING_MARK;
+ public static byte CONNECTOR_PUNCTUATION;
+ public static byte CONTROL;
+ public static byte CURRENCY_SYMBOL;
+ public static byte DASH_PUNCTUATION;
+ public static byte DECIMAL_DIGIT_NUMBER;
+ public static byte DIRECTIONALITY_ARABIC_NUMBER;
+ public static byte DIRECTIONALITY_BOUNDARY_NEUTRAL;
+ public static byte DIRECTIONALITY_COMMON_NUMBER_SEPARATOR;
+ public static byte DIRECTIONALITY_EUROPEAN_NUMBER;
+ public static byte DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR;
+ public static byte DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR;
+ public static byte DIRECTIONALITY_LEFT_TO_RIGHT;
+ public static byte DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING;
+ public static byte DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE;
+ public static byte DIRECTIONALITY_NONSPACING_MARK;
+ public static byte DIRECTIONALITY_OTHER_NEUTRALS;
+ public static byte DIRECTIONALITY_PARAGRAPH_SEPARATOR;
+ public static byte DIRECTIONALITY_POP_DIRECTIONAL_FORMAT;
+ public static byte DIRECTIONALITY_RIGHT_TO_LEFT;
+ public static byte DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC;
+ public static byte DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING;
+ public static byte DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE;
+ public static byte DIRECTIONALITY_SEGMENT_SEPARATOR;
+ public static byte DIRECTIONALITY_UNDEFINED;
+ public static byte DIRECTIONALITY_WHITESPACE;
+ public static byte ENCLOSING_MARK;
+ public static byte END_PUNCTUATION;
+ public static byte FINAL_QUOTE_PUNCTUATION;
+ public static byte FORMAT;
+ public static byte INITIAL_QUOTE_PUNCTUATION;
+ public static byte LETTER_NUMBER;
+ public static byte LINE_SEPARATOR;
+ public static byte LOWERCASE_LETTER;
+ public static byte MATH_SYMBOL;
+ public static int MAX_CODE_POINT;
+ public static char MAX_HIGH_SURROGATE;
+ public static char MAX_LOW_SURROGATE;
+ public static int MAX_RADIX;
+ public static char MAX_SURROGATE;
+ public static char MAX_VALUE;
+ public static int MIN_CODE_POINT;
+ public static char MIN_HIGH_SURROGATE;
+ public static char MIN_LOW_SURROGATE;
+ public static int MIN_RADIX;
+ public static int MIN_SUPPLEMENTARY_CODE_POINT;
+ public static char MIN_SURROGATE;
+ public static char MIN_VALUE;
+ public static byte MODIFIER_LETTER;
+ public static byte MODIFIER_SYMBOL;
+ public static byte NON_SPACING_MARK;
+ public static byte OTHER_LETTER;
+ public static byte OTHER_NUMBER;
+ public static byte OTHER_PUNCTUATION;
+ public static byte OTHER_SYMBOL;
+ public static byte PARAGRAPH_SEPARATOR;
+ public static byte PRIVATE_USE;
+ public static int SIZE;
+ public static byte SPACE_SEPARATOR;
+ public static byte START_PUNCTUATION;
+ public static byte SURROGATE;
+ public static byte TITLECASE_LETTER;
+ public static java.lang.Class TYPE;
+ public static byte UNASSIGNED;
+ public static byte UPPERCASE_LETTER;
+}
+
+-keep class java.lang.Class {
+
+ public java.lang.Class asSubclass(java.lang.Class);
+ public java.lang.Object cast(java.lang.Object);
+ public boolean desiredAssertionStatus();
+ public static java.lang.Class forName(java.lang.String);
+ public static java.lang.Class forName(java.lang.String, boolean, java.lang.ClassLoader);
+ public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
+ public java.lang.annotation.Annotation[] getAnnotations();
+ public java.lang.String getCanonicalName();
+ public java.lang.ClassLoader getClassLoader();
+ public java.lang.Class[] getClasses();
+ public java.lang.Class getComponentType();
+ public java.lang.reflect.Constructor getConstructor(java.lang.Class[]);
+ public java.lang.reflect.Constructor[] getConstructors();
+ public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+ public java.lang.Class[] getDeclaredClasses();
+ public java.lang.reflect.Constructor getDeclaredConstructor(java.lang.Class[]);
+ public java.lang.reflect.Constructor[] getDeclaredConstructors();
+ public java.lang.reflect.Field getDeclaredField(java.lang.String);
+ public java.lang.reflect.Field[] getDeclaredFields();
+ public java.lang.reflect.Method getDeclaredMethod(java.lang.String, java.lang.Class[]);
+ public java.lang.reflect.Method[] getDeclaredMethods();
+ public java.lang.Class getDeclaringClass();
+ public java.lang.Class getEnclosingClass();
+ public java.lang.reflect.Constructor getEnclosingConstructor();
+ public java.lang.reflect.Method getEnclosingMethod();
+ public java.lang.Object[] getEnumConstants();
+ public java.lang.reflect.Field getField(java.lang.String);
+ public java.lang.reflect.Field[] getFields();
+ public java.lang.reflect.Type[] getGenericInterfaces();
+ public java.lang.reflect.Type getGenericSuperclass();
+ public java.lang.Class[] getInterfaces();
+ public java.lang.reflect.Method getMethod(java.lang.String, java.lang.Class[]);
+ public java.lang.reflect.Method[] getMethods();
+ public int getModifiers();
+ public java.lang.String getName();
+ public java.lang.Package getPackage();
+ public java.security.ProtectionDomain getProtectionDomain();
+ public java.net.URL getResource(java.lang.String);
+ public java.io.InputStream getResourceAsStream(java.lang.String);
+ public java.lang.Object[] getSigners();
+ public java.lang.String getSimpleName();
+ public java.lang.Class getSuperclass();
+ public synchronized java.lang.reflect.TypeVariable[] getTypeParameters();
+ public boolean isAnnotation();
+ public boolean isAnnotationPresent(java.lang.Class);
+ public boolean isAnonymousClass();
+ public boolean isArray();
+ public boolean isAssignableFrom(java.lang.Class);
+ public boolean isEnum();
+ public boolean isInstance(java.lang.Object);
+ public boolean isInterface();
+ public boolean isLocalClass();
+ public boolean isMemberClass();
+ public boolean isPrimitive();
+ public boolean isSynthetic();
+ public java.lang.Object newInstance();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.lang.ClassFormatError {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.ClassLoader {
+ <init>();
+ <init>(java.lang.ClassLoader);
+
+ public void clearAssertionStatus();
+ protected java.lang.Class defineClass(byte[], int, int);
+ protected java.lang.Class defineClass(java.lang.String, byte[], int, int);
+ protected java.lang.Class defineClass(java.lang.String, byte[], int, int, java.security.ProtectionDomain);
+ protected java.lang.Class defineClass(java.lang.String, java.nio.ByteBuffer, java.security.ProtectionDomain);
+ protected java.lang.Package definePackage(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.net.URL);
+ protected java.lang.Class findClass(java.lang.String);
+ protected java.lang.String findLibrary(java.lang.String);
+ protected java.lang.Class findLoadedClass(java.lang.String);
+ protected java.net.URL findResource(java.lang.String);
+ protected java.util.Enumeration findResources(java.lang.String);
+ protected java.lang.Class findSystemClass(java.lang.String);
+ protected java.lang.Package getPackage(java.lang.String);
+ protected java.lang.Package[] getPackages();
+ public java.lang.ClassLoader getParent();
+ public java.net.URL getResource(java.lang.String);
+ public java.io.InputStream getResourceAsStream(java.lang.String);
+ public java.util.Enumeration getResources(java.lang.String);
+ public static java.lang.ClassLoader getSystemClassLoader();
+ public static java.net.URL getSystemResource(java.lang.String);
+ public static java.io.InputStream getSystemResourceAsStream(java.lang.String);
+ public static java.util.Enumeration getSystemResources(java.lang.String);
+ public java.lang.Class loadClass(java.lang.String);
+ protected java.lang.Class loadClass(java.lang.String, boolean);
+ protected void resolveClass(java.lang.Class);
+ public void setClassAssertionStatus(java.lang.String, boolean);
+ public void setDefaultAssertionStatus(boolean);
+ public void setPackageAssertionStatus(java.lang.String, boolean);
+ protected void setSigners(java.lang.Class, java.lang.Object[]);
+
+
+}
+
+-keep class java.lang.ClassNotFoundException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+
+ public java.lang.Throwable getCause();
+ public java.lang.Throwable getException();
+
+
+}
+
+-keep class java.lang.CloneNotSupportedException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.Double {
+ <init>(double);
+ <init>(java.lang.String);
+
+ public byte byteValue();
+ public static int compare(double, double);
+ public int compareTo(java.lang.Double);
+ public int compareTo(java.lang.Object);
+ public static long doubleToLongBits(double);
+ public static long doubleToRawLongBits(double);
+ public double doubleValue();
+ public boolean equals(java.lang.Object);
+ public float floatValue();
+ public int hashCode();
+ public int intValue();
+ public boolean isInfinite();
+ public static boolean isInfinite(double);
+ public boolean isNaN();
+ public static boolean isNaN(double);
+ public static double longBitsToDouble(long);
+ public long longValue();
+ public static double parseDouble(java.lang.String);
+ public short shortValue();
+ public static java.lang.String toHexString(double);
+ public java.lang.String toString();
+ public static java.lang.String toString(double);
+ public static java.lang.Double valueOf(java.lang.String);
+ public static java.lang.Double valueOf(double);
+
+
+ public static int MAX_EXPONENT;
+ public static double MAX_VALUE;
+ public static int MIN_EXPONENT;
+ public static double MIN_NORMAL;
+ public static double MIN_VALUE;
+ public static double NEGATIVE_INFINITY;
+ public static double NaN;
+ public static double POSITIVE_INFINITY;
+ public static int SIZE;
+ public static java.lang.Class TYPE;
+}
+
+-keep class java.lang.Enum {
+ <init>(java.lang.String, int);
+
+ protected java.lang.Object clone();
+ public int compareTo(java.lang.Enum);
+ public int compareTo(java.lang.Object);
+ public boolean equals(java.lang.Object);
+ protected void finalize();
+ public java.lang.Class getDeclaringClass();
+ public int hashCode();
+ public java.lang.String name();
+ public int ordinal();
+ public java.lang.String toString();
+ public static java.lang.Enum valueOf(java.lang.Class, java.lang.String);
+
+
+}
+
+-keep class java.lang.Error {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.Exception {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.Float {
+ <init>(float);
+ <init>(double);
+ <init>(java.lang.String);
+
+ public byte byteValue();
+ public static int compare(float, float);
+ public int compareTo(java.lang.Float);
+ public int compareTo(java.lang.Object);
+ public double doubleValue();
+ public boolean equals(java.lang.Object);
+ public static int floatToIntBits(float);
+ public static int floatToRawIntBits(float);
+ public float floatValue();
+ public int hashCode();
+ public static float intBitsToFloat(int);
+ public int intValue();
+ public boolean isInfinite();
+ public static boolean isInfinite(float);
+ public boolean isNaN();
+ public static boolean isNaN(float);
+ public long longValue();
+ public static float parseFloat(java.lang.String);
+ public short shortValue();
+ public static java.lang.String toHexString(float);
+ public java.lang.String toString();
+ public static java.lang.String toString(float);
+ public static java.lang.Float valueOf(java.lang.String);
+ public static java.lang.Float valueOf(float);
+
+
+ public static int MAX_EXPONENT;
+ public static float MAX_VALUE;
+ public static int MIN_EXPONENT;
+ public static float MIN_NORMAL;
+ public static float MIN_VALUE;
+ public static float NEGATIVE_INFINITY;
+ public static float NaN;
+ public static float POSITIVE_INFINITY;
+ public static int SIZE;
+ public static java.lang.Class TYPE;
+}
+
+-keep class java.lang.IllegalAccessException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.IllegalArgumentException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.IllegalStateException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.InstantiationException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.Integer {
+ <init>(int);
+ <init>(java.lang.String);
+
+ public static int bitCount(int);
+ public byte byteValue();
+ public static int compare(int, int);
+ public int compareTo(java.lang.Integer);
+ public int compareTo(java.lang.Object);
+ public static java.lang.Integer decode(java.lang.String);
+ public double doubleValue();
+ public boolean equals(java.lang.Object);
+ public float floatValue();
+ public static java.lang.Integer getInteger(java.lang.String);
+ public static java.lang.Integer getInteger(java.lang.String, int);
+ public static java.lang.Integer getInteger(java.lang.String, java.lang.Integer);
+ public int hashCode();
+ public static int highestOneBit(int);
+ public int intValue();
+ public long longValue();
+ public static int lowestOneBit(int);
+ public static int numberOfLeadingZeros(int);
+ public static int numberOfTrailingZeros(int);
+ public static int parseInt(java.lang.String);
+ public static int parseInt(java.lang.String, int);
+ public static int reverse(int);
+ public static int reverseBytes(int);
+ public static int rotateLeft(int, int);
+ public static int rotateRight(int, int);
+ public short shortValue();
+ public static int signum(int);
+ public static java.lang.String toBinaryString(int);
+ public static java.lang.String toHexString(int);
+ public static java.lang.String toOctalString(int);
+ public java.lang.String toString();
+ public static java.lang.String toString(int);
+ public static java.lang.String toString(int, int);
+ public static java.lang.Integer valueOf(java.lang.String);
+ public static java.lang.Integer valueOf(java.lang.String, int);
+ public static java.lang.Integer valueOf(int);
+
+
+ public static int MAX_VALUE;
+ public static int MIN_VALUE;
+ public static int SIZE;
+ public static java.lang.Class TYPE;
+}
+
+-keep class java.lang.InterruptedException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.LinkageError {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.Long {
+ <init>(long);
+ <init>(java.lang.String);
+
+ public static int bitCount(long);
+ public byte byteValue();
+ public static int compare(long, long);
+ public int compareTo(java.lang.Long);
+ public int compareTo(java.lang.Object);
+ public static java.lang.Long decode(java.lang.String);
+ public double doubleValue();
+ public boolean equals(java.lang.Object);
+ public float floatValue();
+ public static java.lang.Long getLong(java.lang.String);
+ public static java.lang.Long getLong(java.lang.String, long);
+ public static java.lang.Long getLong(java.lang.String, java.lang.Long);
+ public int hashCode();
+ public static long highestOneBit(long);
+ public int intValue();
+ public long longValue();
+ public static long lowestOneBit(long);
+ public static int numberOfLeadingZeros(long);
+ public static int numberOfTrailingZeros(long);
+ public static long parseLong(java.lang.String);
+ public static long parseLong(java.lang.String, int);
+ public static long reverse(long);
+ public static long reverseBytes(long);
+ public static long rotateLeft(long, int);
+ public static long rotateRight(long, int);
+ public short shortValue();
+ public static int signum(long);
+ public static java.lang.String toBinaryString(long);
+ public static java.lang.String toHexString(long);
+ public static java.lang.String toOctalString(long);
+ public java.lang.String toString();
+ public static java.lang.String toString(long);
+ public static java.lang.String toString(long, int);
+ public static java.lang.Long valueOf(java.lang.String);
+ public static java.lang.Long valueOf(java.lang.String, int);
+ public static java.lang.Long valueOf(long);
+
+
+ public static long MAX_VALUE;
+ public static long MIN_VALUE;
+ public static int SIZE;
+ public static java.lang.Class TYPE;
+}
+
+-keep class java.lang.NoSuchFieldException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.NoSuchMethodException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.Number {
+ <init>();
+
+ public byte byteValue();
+ public abstract double doubleValue();
+ public abstract float floatValue();
+ public abstract int intValue();
+ public abstract long longValue();
+ public short shortValue();
+
+
+}
+
+-keep class java.lang.NumberFormatException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.lang.Object {
+ <init>();
+
+ protected java.lang.Object clone();
+ public boolean equals(java.lang.Object);
+ protected void finalize();
+ public java.lang.Class getClass();
+ public int hashCode();
+ public void notify();
+ public void notifyAll();
+ public java.lang.String toString();
+ public void wait();
+ public void wait(long);
+ public void wait(long, int);
+
+
+}
+
+-keep class java.lang.Package {
+
+ public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
+ public java.lang.annotation.Annotation[] getAnnotations();
+ public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+ public java.lang.String getImplementationTitle();
+ public java.lang.String getImplementationVendor();
+ public java.lang.String getImplementationVersion();
+ public java.lang.String getName();
+ public static java.lang.Package getPackage(java.lang.String);
+ public static java.lang.Package[] getPackages();
+ public java.lang.String getSpecificationTitle();
+ public java.lang.String getSpecificationVendor();
+ public java.lang.String getSpecificationVersion();
+ public int hashCode();
+ public boolean isAnnotationPresent(java.lang.Class);
+ public boolean isCompatibleWith(java.lang.String);
+ public boolean isSealed();
+ public boolean isSealed(java.net.URL);
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.lang.ReflectiveOperationException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.Throwable);
+ <init>(java.lang.String, java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.Runnable {
+
+ public abstract void run();
+
+
+}
+
+-keep class java.lang.RuntimeException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.SecurityException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.Short {
+ <init>(java.lang.String);
+ <init>(short);
+
+ public byte byteValue();
+ public static int compare(short, short);
+ public int compareTo(java.lang.Short);
+ public int compareTo(java.lang.Object);
+ public static java.lang.Short decode(java.lang.String);
+ public double doubleValue();
+ public boolean equals(java.lang.Object);
+ public float floatValue();
+ public int hashCode();
+ public int intValue();
+ public long longValue();
+ public static short parseShort(java.lang.String);
+ public static short parseShort(java.lang.String, int);
+ public static short reverseBytes(short);
+ public short shortValue();
+ public java.lang.String toString();
+ public static java.lang.String toString(short);
+ public static java.lang.Short valueOf(java.lang.String);
+ public static java.lang.Short valueOf(java.lang.String, int);
+ public static java.lang.Short valueOf(short);
+
+
+ public static short MAX_VALUE;
+ public static short MIN_VALUE;
+ public static int SIZE;
+ public static java.lang.Class TYPE;
+}
+
+-keep class java.lang.StackTraceElement {
+ <init>(java.lang.String, java.lang.String, java.lang.String, int);
+
+ public boolean equals(java.lang.Object);
+ public java.lang.String getClassName();
+ public java.lang.String getFileName();
+ public int getLineNumber();
+ public java.lang.String getMethodName();
+ public int hashCode();
+ public boolean isNativeMethod();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.lang.String {
+ <init>();
+ <init>(byte[]);
+ <init>(byte[], int);
+ <init>(byte[], int, int);
+ <init>(byte[], int, int, int);
+ <init>(byte[], int, int, java.lang.String);
+ <init>(byte[], java.lang.String);
+ <init>(byte[], int, int, java.nio.charset.Charset);
+ <init>(byte[], java.nio.charset.Charset);
+ <init>(char[]);
+ <init>(char[], int, int);
+ <init>(java.lang.String);
+ <init>(java.lang.StringBuffer);
+ <init>(int[], int, int);
+ <init>(java.lang.StringBuilder);
+
+ public char charAt(int);
+ public int codePointAt(int);
+ public int codePointBefore(int);
+ public int codePointCount(int, int);
+ public int compareTo(java.lang.String);
+ public int compareTo(java.lang.Object);
+ public int compareToIgnoreCase(java.lang.String);
+ public java.lang.String concat(java.lang.String);
+ public boolean contains(java.lang.CharSequence);
+ public boolean contentEquals(java.lang.StringBuffer);
+ public boolean contentEquals(java.lang.CharSequence);
+ public static java.lang.String copyValueOf(char[]);
+ public static java.lang.String copyValueOf(char[], int, int);
+ public boolean endsWith(java.lang.String);
+ public boolean equals(java.lang.Object);
+ public boolean equalsIgnoreCase(java.lang.String);
+ public static java.lang.String format(java.lang.String, java.lang.Object[]);
+ public static java.lang.String format(java.util.Locale, java.lang.String, java.lang.Object[]);
+ public void getBytes(int, int, byte[], int);
+ public byte[] getBytes();
+ public byte[] getBytes(java.lang.String);
+ public byte[] getBytes(java.nio.charset.Charset);
+ public void getChars(int, int, char[], int);
+ public int hashCode();
+ public int indexOf(int);
+ public int indexOf(int, int);
+ public int indexOf(java.lang.String);
+ public int indexOf(java.lang.String, int);
+ public java.lang.String intern();
+ public boolean isEmpty();
+ public int lastIndexOf(int);
+ public int lastIndexOf(int, int);
+ public int lastIndexOf(java.lang.String);
+ public int lastIndexOf(java.lang.String, int);
+ public int length();
+ public boolean matches(java.lang.String);
+ public int offsetByCodePoints(int, int);
+ public boolean regionMatches(int, java.lang.String, int, int);
+ public boolean regionMatches(boolean, int, java.lang.String, int, int);
+ public java.lang.String replace(char, char);
+ public java.lang.String replace(java.lang.CharSequence, java.lang.CharSequence);
+ public java.lang.String replaceAll(java.lang.String, java.lang.String);
+ public java.lang.String replaceFirst(java.lang.String, java.lang.String);
+ public java.lang.String[] split(java.lang.String);
+ public java.lang.String[] split(java.lang.String, int);
+ public boolean startsWith(java.lang.String);
+ public boolean startsWith(java.lang.String, int);
+ public java.lang.CharSequence subSequence(int, int);
+ public java.lang.String substring(int);
+ public java.lang.String substring(int, int);
+ public char[] toCharArray();
+ public java.lang.String toLowerCase();
+ public java.lang.String toLowerCase(java.util.Locale);
+ public java.lang.String toString();
+ public java.lang.String toUpperCase();
+ public java.lang.String toUpperCase(java.util.Locale);
+ public java.lang.String trim();
+ public static java.lang.String valueOf(char[]);
+ public static java.lang.String valueOf(char[], int, int);
+ public static java.lang.String valueOf(char);
+ public static java.lang.String valueOf(double);
+ public static java.lang.String valueOf(float);
+ public static java.lang.String valueOf(int);
+ public static java.lang.String valueOf(long);
+ public static java.lang.String valueOf(java.lang.Object);
+ public static java.lang.String valueOf(boolean);
+
+
+ public static java.util.Comparator CASE_INSENSITIVE_ORDER;
+}
+
+-keep class java.lang.StringBuffer {
+ <init>();
+ <init>(int);
+ <init>(java.lang.String);
+ <init>(java.lang.CharSequence);
+
+ public java.lang.StringBuffer append(boolean);
+ public synchronized java.lang.StringBuffer append(char);
+ public java.lang.StringBuffer append(double);
+ public java.lang.StringBuffer append(float);
+ public java.lang.StringBuffer append(int);
+ public java.lang.StringBuffer append(long);
+ public synchronized java.lang.StringBuffer append(java.lang.Object);
+ public synchronized java.lang.StringBuffer append(java.lang.String);
+ public synchronized java.lang.StringBuffer append(java.lang.StringBuffer);
+ public synchronized java.lang.StringBuffer append(char[]);
+ public synchronized java.lang.StringBuffer append(char[], int, int);
+ public synchronized java.lang.StringBuffer append(java.lang.CharSequence);
+ public synchronized java.lang.StringBuffer append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence);
+ public java.lang.Appendable append(char);
+ public java.lang.StringBuffer appendCodePoint(int);
+ public int capacity();
+ public synchronized char charAt(int);
+ public synchronized int codePointAt(int);
+ public synchronized int codePointBefore(int);
+ public synchronized int codePointCount(int, int);
+ public synchronized java.lang.StringBuffer delete(int, int);
+ public synchronized java.lang.StringBuffer deleteCharAt(int);
+ public synchronized void ensureCapacity(int);
+ public synchronized void getChars(int, int, char[], int);
+ public synchronized int indexOf(java.lang.String, int);
+ public int indexOf(java.lang.String);
+ public synchronized java.lang.StringBuffer insert(int, char);
+ public java.lang.StringBuffer insert(int, boolean);
+ public java.lang.StringBuffer insert(int, int);
+ public java.lang.StringBuffer insert(int, long);
+ public java.lang.StringBuffer insert(int, double);
+ public java.lang.StringBuffer insert(int, float);
+ public java.lang.StringBuffer insert(int, java.lang.Object);
+ public synchronized java.lang.StringBuffer insert(int, java.lang.String);
+ public synchronized java.lang.StringBuffer insert(int, char[]);
+ public synchronized java.lang.StringBuffer insert(int, char[], int, int);
+ public synchronized java.lang.StringBuffer insert(int, java.lang.CharSequence);
+ public synchronized java.lang.StringBuffer insert(int, java.lang.CharSequence, int, int);
+ public synchronized int lastIndexOf(java.lang.String, int);
+ public int lastIndexOf(java.lang.String);
+ public int length();
+ public synchronized int offsetByCodePoints(int, int);
+ public synchronized java.lang.StringBuffer replace(int, int, java.lang.String);
+ public synchronized java.lang.StringBuffer reverse();
+ public synchronized void setCharAt(int, char);
+ public synchronized void setLength(int);
+ public synchronized java.lang.CharSequence subSequence(int, int);
+ public synchronized java.lang.String substring(int);
+ public synchronized java.lang.String substring(int, int);
+ public synchronized java.lang.String toString();
+ public synchronized void trimToSize();
+
+
+}
+
+-keep class java.lang.StringBuilder {
+ <init>();
+ <init>(int);
+ <init>(java.lang.CharSequence);
+ <init>(java.lang.String);
+
+ public java.lang.StringBuilder append(boolean);
+ public java.lang.StringBuilder append(char);
+ public java.lang.StringBuilder append(int);
+ public java.lang.StringBuilder append(long);
+ public java.lang.StringBuilder append(float);
+ public java.lang.StringBuilder append(double);
+ public java.lang.StringBuilder append(java.lang.Object);
+ public java.lang.StringBuilder append(java.lang.String);
+ public java.lang.StringBuilder append(java.lang.StringBuffer);
+ public java.lang.StringBuilder append(char[]);
+ public java.lang.StringBuilder append(char[], int, int);
+ public java.lang.StringBuilder append(java.lang.CharSequence);
+ public java.lang.StringBuilder append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence);
+ public java.lang.Appendable append(char);
+ public java.lang.StringBuilder appendCodePoint(int);
+ public int capacity();
+ public char charAt(int);
+ public int codePointAt(int);
+ public int codePointBefore(int);
+ public int codePointCount(int, int);
+ public java.lang.StringBuilder delete(int, int);
+ public java.lang.StringBuilder deleteCharAt(int);
+ public void ensureCapacity(int);
+ public void getChars(int, int, char[], int);
+ public int indexOf(java.lang.String, int);
+ public int indexOf(java.lang.String);
+ public java.lang.StringBuilder insert(int, boolean);
+ public java.lang.StringBuilder insert(int, char);
+ public java.lang.StringBuilder insert(int, int);
+ public java.lang.StringBuilder insert(int, long);
+ public java.lang.StringBuilder insert(int, float);
+ public java.lang.StringBuilder insert(int, double);
+ public java.lang.StringBuilder insert(int, java.lang.Object);
+ public java.lang.StringBuilder insert(int, java.lang.String);
+ public java.lang.StringBuilder insert(int, char[]);
+ public java.lang.StringBuilder insert(int, char[], int, int);
+ public java.lang.StringBuilder insert(int, java.lang.CharSequence);
+ public java.lang.StringBuilder insert(int, java.lang.CharSequence, int, int);
+ public int lastIndexOf(java.lang.String, int);
+ public int lastIndexOf(java.lang.String);
+ public int length();
+ public int offsetByCodePoints(int, int);
+ public java.lang.StringBuilder replace(int, int, java.lang.String);
+ public java.lang.StringBuilder reverse();
+ public void setCharAt(int, char);
+ public void setLength(int);
+ public java.lang.CharSequence subSequence(int, int);
+ public java.lang.String substring(int, int);
+ public java.lang.String substring(int);
+ public java.lang.String toString();
+ public void trimToSize();
+
+
+}
+
+-keep class java.lang.Thread {
+ <init>();
+ <init>(java.lang.Runnable);
+ <init>(java.lang.Runnable, java.lang.String);
+ <init>(java.lang.String);
+ <init>(java.lang.ThreadGroup, java.lang.Runnable);
+ <init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String);
+ <init>(java.lang.ThreadGroup, java.lang.String);
+ <init>(java.lang.ThreadGroup, java.lang.Runnable, java.lang.String, long);
+
+ public static int activeCount();
+ public void checkAccess();
+ public int countStackFrames();
+ public static java.lang.Thread currentThread();
+ public void destroy();
+ public static void dumpStack();
+ public static int enumerate(java.lang.Thread[]);
+ public static java.util.Map getAllStackTraces();
+ public java.lang.ClassLoader getContextClassLoader();
+ public static java.lang.Thread$UncaughtExceptionHandler getDefaultUncaughtExceptionHandler();
+ public long getId();
+ public java.lang.String getName();
+ public int getPriority();
+ public java.lang.StackTraceElement[] getStackTrace();
+ public java.lang.Thread$State getState();
+ public java.lang.ThreadGroup getThreadGroup();
+ public java.lang.Thread$UncaughtExceptionHandler getUncaughtExceptionHandler();
+ public static boolean holdsLock(java.lang.Object);
+ public void interrupt();
+ public static boolean interrupted();
+ public boolean isAlive();
+ public boolean isDaemon();
+ public boolean isInterrupted();
+ public void join();
+ public void join(long);
+ public void join(long, int);
+ public void resume();
+ public void run();
+ public void setContextClassLoader(java.lang.ClassLoader);
+ public void setDaemon(boolean);
+ public static void setDefaultUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler);
+ public void setName(java.lang.String);
+ public void setPriority(int);
+ public void setUncaughtExceptionHandler(java.lang.Thread$UncaughtExceptionHandler);
+ public static void sleep(long);
+ public static void sleep(long, int);
+ public synchronized void start();
+ public void stop();
+ public synchronized void stop(java.lang.Throwable);
+ public void suspend();
+ public java.lang.String toString();
+ public static void yield();
+
+
+ public static int MAX_PRIORITY;
+ public static int MIN_PRIORITY;
+ public static int NORM_PRIORITY;
+}
+
+-keep class java.lang.Thread$State {
+
+ public static java.lang.Thread$State valueOf(java.lang.String);
+ public static java.lang.Thread$State[] values();
+
+ public static java.lang.Thread$State BLOCKED;
+ public static java.lang.Thread$State NEW;
+ public static java.lang.Thread$State RUNNABLE;
+ public static java.lang.Thread$State TERMINATED;
+ public static java.lang.Thread$State TIMED_WAITING;
+ public static java.lang.Thread$State WAITING;
+
+}
+
+-keep class java.lang.Thread$UncaughtExceptionHandler {
+
+ public abstract void uncaughtException(java.lang.Thread, java.lang.Throwable);
+
+
+}
+
+-keep class java.lang.ThreadGroup {
+ <init>(java.lang.String);
+ <init>(java.lang.ThreadGroup, java.lang.String);
+
+ public int activeCount();
+ public int activeGroupCount();
+ public boolean allowThreadSuspension(boolean);
+ public void checkAccess();
+ public void destroy();
+ public int enumerate(java.lang.Thread[]);
+ public int enumerate(java.lang.Thread[], boolean);
+ public int enumerate(java.lang.ThreadGroup[]);
+ public int enumerate(java.lang.ThreadGroup[], boolean);
+ public int getMaxPriority();
+ public java.lang.String getName();
+ public java.lang.ThreadGroup getParent();
+ public void interrupt();
+ public boolean isDaemon();
+ public synchronized boolean isDestroyed();
+ public void list();
+ public boolean parentOf(java.lang.ThreadGroup);
+ public void resume();
+ public void setDaemon(boolean);
+ public void setMaxPriority(int);
+ public void stop();
+ public void suspend();
+ public java.lang.String toString();
+ public void uncaughtException(java.lang.Thread, java.lang.Throwable);
+
+
+}
+
+-keep class java.lang.Throwable {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+ <init>(java.lang.String, java.lang.Throwable, boolean, boolean);
+
+ public void addSuppressed(java.lang.Throwable);
+ public java.lang.Throwable fillInStackTrace();
+ public java.lang.Throwable getCause();
+ public java.lang.String getLocalizedMessage();
+ public java.lang.String getMessage();
+ public java.lang.StackTraceElement[] getStackTrace();
+ public java.lang.Throwable[] getSuppressed();
+ public java.lang.Throwable initCause(java.lang.Throwable);
+ public void printStackTrace();
+ public void printStackTrace(java.io.PrintStream);
+ public void printStackTrace(java.io.PrintWriter);
+ public void setStackTrace(java.lang.StackTraceElement[]);
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.lang.UnsupportedOperationException {
+ <init>();
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.lang.annotation.Annotation {
+
+ public abstract java.lang.Class annotationType();
+ public abstract boolean equals(java.lang.Object);
+ public abstract int hashCode();
+ public abstract java.lang.String toString();
+
+
+}
+
+-keep class java.lang.reflect.AccessibleObject {
+ <init>();
+
+ public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
+ public java.lang.annotation.Annotation[] getAnnotations();
+ public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+ public boolean isAccessible();
+ public boolean isAnnotationPresent(java.lang.Class);
+ public void setAccessible(boolean);
+ public static void setAccessible(java.lang.reflect.AccessibleObject[], boolean);
+
+
+}
+
+-keep class java.lang.reflect.Constructor {
+
+ public boolean equals(java.lang.Object);
+ public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
+ public java.lang.annotation.Annotation[] getAnnotations();
+ public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+ public java.lang.Class getDeclaringClass();
+ public java.lang.Class[] getExceptionTypes();
+ public java.lang.reflect.Type[] getGenericExceptionTypes();
+ public java.lang.reflect.Type[] getGenericParameterTypes();
+ public int getModifiers();
+ public java.lang.String getName();
+ public java.lang.annotation.Annotation[][] getParameterAnnotations();
+ public java.lang.Class[] getParameterTypes();
+ public java.lang.reflect.TypeVariable[] getTypeParameters();
+ public int hashCode();
+ public boolean isAnnotationPresent(java.lang.Class);
+ public boolean isSynthetic();
+ public boolean isVarArgs();
+ public java.lang.Object newInstance(java.lang.Object[]);
+ public void setAccessible(boolean);
+ public java.lang.String toGenericString();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.lang.reflect.Field {
+
+ public boolean equals(java.lang.Object);
+ public java.lang.Object get(java.lang.Object);
+ public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
+ public boolean getBoolean(java.lang.Object);
+ public byte getByte(java.lang.Object);
+ public char getChar(java.lang.Object);
+ public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+ public java.lang.Class getDeclaringClass();
+ public double getDouble(java.lang.Object);
+ public float getFloat(java.lang.Object);
+ public java.lang.reflect.Type getGenericType();
+ public int getInt(java.lang.Object);
+ public long getLong(java.lang.Object);
+ public int getModifiers();
+ public java.lang.String getName();
+ public short getShort(java.lang.Object);
+ public java.lang.Class getType();
+ public int hashCode();
+ public boolean isAnnotationPresent(java.lang.Class);
+ public boolean isEnumConstant();
+ public boolean isSynthetic();
+ public void set(java.lang.Object, java.lang.Object);
+ public void setBoolean(java.lang.Object, boolean);
+ public void setByte(java.lang.Object, byte);
+ public void setChar(java.lang.Object, char);
+ public void setDouble(java.lang.Object, double);
+ public void setFloat(java.lang.Object, float);
+ public void setInt(java.lang.Object, int);
+ public void setLong(java.lang.Object, long);
+ public void setShort(java.lang.Object, short);
+ public java.lang.String toGenericString();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.lang.reflect.GenericDeclaration {
+
+ public abstract java.lang.reflect.TypeVariable[] getTypeParameters();
+
+
+}
+
+-keep class java.lang.reflect.InvocationTargetException {
+ <init>();
+ <init>(java.lang.Throwable);
+ <init>(java.lang.Throwable, java.lang.String);
+
+ public java.lang.Throwable getCause();
+ public java.lang.Throwable getTargetException();
+
+
+}
+
+-keep class java.lang.reflect.Method {
+
+ public boolean equals(java.lang.Object);
+ public java.lang.annotation.Annotation getAnnotation(java.lang.Class);
+ public java.lang.annotation.Annotation[] getAnnotations();
+ public java.lang.annotation.Annotation[] getDeclaredAnnotations();
+ public java.lang.Class getDeclaringClass();
+ public java.lang.Object getDefaultValue();
+ public java.lang.Class[] getExceptionTypes();
+ public java.lang.reflect.Type[] getGenericExceptionTypes();
+ public java.lang.reflect.Type[] getGenericParameterTypes();
+ public java.lang.reflect.Type getGenericReturnType();
+ public int getModifiers();
+ public java.lang.String getName();
+ public java.lang.annotation.Annotation[][] getParameterAnnotations();
+ public java.lang.Class[] getParameterTypes();
+ public java.lang.Class getReturnType();
+ public java.lang.reflect.TypeVariable[] getTypeParameters();
+ public int hashCode();
+ public java.lang.Object invoke(java.lang.Object, java.lang.Object[]);
+ public boolean isAnnotationPresent(java.lang.Class);
+ public boolean isBridge();
+ public boolean isSynthetic();
+ public boolean isVarArgs();
+ public java.lang.String toGenericString();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.lang.reflect.Type {
+
+
+
+}
+
+-keep class java.lang.reflect.TypeVariable {
+
+ public abstract java.lang.reflect.Type[] getBounds();
+ public abstract java.lang.reflect.GenericDeclaration getGenericDeclaration();
+ public abstract java.lang.String getName();
+
+
+}
+
+-keep class java.net.ContentHandler {
+ <init>();
+
+ public abstract java.lang.Object getContent(java.net.URLConnection);
+ public java.lang.Object getContent(java.net.URLConnection, java.lang.Class[]);
+
+
+}
+
+-keep class java.net.ContentHandlerFactory {
+
+ public abstract java.net.ContentHandler createContentHandler(java.lang.String);
+
+
+}
+
+-keep class java.net.DatagramPacket {
+ <init>(byte[], int);
+ <init>(byte[], int, int);
+ <init>(byte[], int, int, java.net.InetAddress, int);
+ <init>(byte[], int, java.net.InetAddress, int);
+ <init>(byte[], int, java.net.SocketAddress);
+ <init>(byte[], int, int, java.net.SocketAddress);
+
+ public synchronized java.net.InetAddress getAddress();
+ public synchronized byte[] getData();
+ public synchronized int getLength();
+ public synchronized int getOffset();
+ public synchronized int getPort();
+ public synchronized java.net.SocketAddress getSocketAddress();
+ public synchronized void setAddress(java.net.InetAddress);
+ public synchronized void setData(byte[], int, int);
+ public synchronized void setData(byte[]);
+ public synchronized void setLength(int);
+ public synchronized void setPort(int);
+ public synchronized void setSocketAddress(java.net.SocketAddress);
+
+
+}
+
+-keep class java.net.DatagramSocket {
+ <init>();
+ <init>(int);
+ <init>(int, java.net.InetAddress);
+ <init>(java.net.DatagramSocketImpl);
+ <init>(java.net.SocketAddress);
+
+ public void bind(java.net.SocketAddress);
+ public void close();
+ public void connect(java.net.SocketAddress);
+ public void connect(java.net.InetAddress, int);
+ public void disconnect();
+ public boolean getBroadcast();
+ public java.nio.channels.DatagramChannel getChannel();
+ public java.net.InetAddress getInetAddress();
+ public java.net.InetAddress getLocalAddress();
+ public int getLocalPort();
+ public java.net.SocketAddress getLocalSocketAddress();
+ public int getPort();
+ public synchronized int getReceiveBufferSize();
+ public java.net.SocketAddress getRemoteSocketAddress();
+ public boolean getReuseAddress();
+ public synchronized int getSendBufferSize();
+ public synchronized int getSoTimeout();
+ public int getTrafficClass();
+ public boolean isBound();
+ public boolean isClosed();
+ public boolean isConnected();
+ public synchronized void receive(java.net.DatagramPacket);
+ public void send(java.net.DatagramPacket);
+ public void setBroadcast(boolean);
+ public static synchronized void setDatagramSocketImplFactory(java.net.DatagramSocketImplFactory);
+ public synchronized void setReceiveBufferSize(int);
+ public void setReuseAddress(boolean);
+ public synchronized void setSendBufferSize(int);
+ public synchronized void setSoTimeout(int);
+ public void setTrafficClass(int);
+
+
+}
+
+-keep class java.net.DatagramSocketImpl {
+ <init>();
+
+ protected abstract void bind(int, java.net.InetAddress);
+ protected abstract void close();
+ protected void connect(java.net.InetAddress, int);
+ protected abstract void create();
+ protected void disconnect();
+ protected java.io.FileDescriptor getFileDescriptor();
+ protected int getLocalPort();
+ protected abstract byte getTTL();
+ protected abstract int getTimeToLive();
+ protected abstract void join(java.net.InetAddress);
+ protected abstract void joinGroup(java.net.SocketAddress, java.net.NetworkInterface);
+ protected abstract void leave(java.net.InetAddress);
+ protected abstract void leaveGroup(java.net.SocketAddress, java.net.NetworkInterface);
+ protected abstract int peek(java.net.InetAddress);
+ protected abstract int peekData(java.net.DatagramPacket);
+ protected abstract void receive(java.net.DatagramPacket);
+ protected abstract void send(java.net.DatagramPacket);
+ protected abstract void setTTL(byte);
+ protected abstract void setTimeToLive(int);
+
+
+ protected java.io.FileDescriptor fd;
+ protected int localPort;
+}
+
+-keep class java.net.DatagramSocketImplFactory {
+
+ public abstract java.net.DatagramSocketImpl createDatagramSocketImpl();
+
+
+}
+
+-keep class java.net.FileNameMap {
+
+ public abstract java.lang.String getContentTypeFor(java.lang.String);
+
+
+}
+
+-keep class java.net.InetAddress {
+
+ public boolean equals(java.lang.Object);
+ public byte[] getAddress();
+ public static java.net.InetAddress[] getAllByName(java.lang.String);
+ public static java.net.InetAddress getByAddress(byte[]);
+ public static java.net.InetAddress getByAddress(java.lang.String, byte[]);
+ public static java.net.InetAddress getByName(java.lang.String);
+ public java.lang.String getCanonicalHostName();
+ public java.lang.String getHostAddress();
+ public java.lang.String getHostName();
+ public static java.net.InetAddress getLocalHost();
+ public static java.net.InetAddress getLoopbackAddress();
+ public int hashCode();
+ public boolean isAnyLocalAddress();
+ public boolean isLinkLocalAddress();
+ public boolean isLoopbackAddress();
+ public boolean isMCGlobal();
+ public boolean isMCLinkLocal();
+ public boolean isMCNodeLocal();
+ public boolean isMCOrgLocal();
+ public boolean isMCSiteLocal();
+ public boolean isMulticastAddress();
+ public boolean isReachable(int);
+ public boolean isReachable(java.net.NetworkInterface, int, int);
+ public boolean isSiteLocalAddress();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.net.InterfaceAddress {
+
+ public boolean equals(java.lang.Object);
+ public java.net.InetAddress getAddress();
+ public java.net.InetAddress getBroadcast();
+ public short getNetworkPrefixLength();
+ public int hashCode();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.net.MalformedURLException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.net.NetworkInterface {
+
+ public boolean equals(java.lang.Object);
+ public static java.net.NetworkInterface getByIndex(int);
+ public static java.net.NetworkInterface getByInetAddress(java.net.InetAddress);
+ public static java.net.NetworkInterface getByName(java.lang.String);
+ public java.lang.String getDisplayName();
+ public byte[] getHardwareAddress();
+ public int getIndex();
+ public java.util.Enumeration getInetAddresses();
+ public java.util.List getInterfaceAddresses();
+ public int getMTU();
+ public java.lang.String getName();
+ public static java.util.Enumeration getNetworkInterfaces();
+ public java.net.NetworkInterface getParent();
+ public java.util.Enumeration getSubInterfaces();
+ public int hashCode();
+ public boolean isLoopback();
+ public boolean isPointToPoint();
+ public boolean isUp();
+ public boolean isVirtual();
+ public boolean supportsMulticast();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.net.Proxy {
+ <init>(java.net.Proxy$Type, java.net.SocketAddress);
+
+ public java.net.SocketAddress address();
+ public boolean equals(java.lang.Object);
+ public int hashCode();
+ public java.lang.String toString();
+ public java.net.Proxy$Type type();
+
+
+ public static java.net.Proxy NO_PROXY;
+}
+
+-keep class java.net.Proxy$Type {
+
+ public static java.net.Proxy$Type valueOf(java.lang.String);
+ public static java.net.Proxy$Type[] values();
+
+ public static java.net.Proxy$Type DIRECT;
+ public static java.net.Proxy$Type HTTP;
+ public static java.net.Proxy$Type SOCKS;
+
+}
+
+-keep class java.net.ServerSocket {
+ <init>();
+ <init>(int);
+ <init>(int, int);
+ <init>(int, int, java.net.InetAddress);
+
+ public java.net.Socket accept();
+ public void bind(java.net.SocketAddress);
+ public void bind(java.net.SocketAddress, int);
+ public void close();
+ public java.nio.channels.ServerSocketChannel getChannel();
+ public java.net.InetAddress getInetAddress();
+ public int getLocalPort();
+ public java.net.SocketAddress getLocalSocketAddress();
+ public int getReceiveBufferSize();
+ public boolean getReuseAddress();
+ public synchronized int getSoTimeout();
+ protected void implAccept(java.net.Socket);
+ public boolean isBound();
+ public boolean isClosed();
+ public void setPerformancePreferences(int, int, int);
+ public void setReceiveBufferSize(int);
+ public void setReuseAddress(boolean);
+ public synchronized void setSoTimeout(int);
+ public static synchronized void setSocketFactory(java.net.SocketImplFactory);
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.net.Socket {
+ <init>();
+ <init>(java.net.Proxy);
+ <init>(java.lang.String, int);
+ <init>(java.lang.String, int, java.net.InetAddress, int);
+ <init>(java.lang.String, int, boolean);
+ <init>(java.net.InetAddress, int);
+ <init>(java.net.InetAddress, int, java.net.InetAddress, int);
+ <init>(java.net.InetAddress, int, boolean);
+ <init>(java.net.SocketImpl);
+
+ public void bind(java.net.SocketAddress);
+ public synchronized void close();
+ public void connect(java.net.SocketAddress);
+ public void connect(java.net.SocketAddress, int);
+ public java.nio.channels.SocketChannel getChannel();
+ public java.net.InetAddress getInetAddress();
+ public java.io.InputStream getInputStream();
+ public boolean getKeepAlive();
+ public java.net.InetAddress getLocalAddress();
+ public int getLocalPort();
+ public java.net.SocketAddress getLocalSocketAddress();
+ public boolean getOOBInline();
+ public java.io.OutputStream getOutputStream();
+ public int getPort();
+ public synchronized int getReceiveBufferSize();
+ public java.net.SocketAddress getRemoteSocketAddress();
+ public boolean getReuseAddress();
+ public synchronized int getSendBufferSize();
+ public int getSoLinger();
+ public synchronized int getSoTimeout();
+ public boolean getTcpNoDelay();
+ public int getTrafficClass();
+ public boolean isBound();
+ public boolean isClosed();
+ public boolean isConnected();
+ public boolean isInputShutdown();
+ public boolean isOutputShutdown();
+ public void sendUrgentData(int);
+ public void setKeepAlive(boolean);
+ public void setOOBInline(boolean);
+ public void setPerformancePreferences(int, int, int);
+ public synchronized void setReceiveBufferSize(int);
+ public void setReuseAddress(boolean);
+ public synchronized void setSendBufferSize(int);
+ public void setSoLinger(boolean, int);
+ public synchronized void setSoTimeout(int);
+ public static synchronized void setSocketImplFactory(java.net.SocketImplFactory);
+ public void setTcpNoDelay(boolean);
+ public void setTrafficClass(int);
+ public void shutdownInput();
+ public void shutdownOutput();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.net.SocketAddress {
+ <init>();
+
+
+
+}
+
+-keep class java.net.SocketException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.net.SocketImpl {
+ <init>();
+
+ protected abstract void accept(java.net.SocketImpl);
+ protected abstract int available();
+ protected abstract void bind(java.net.InetAddress, int);
+ protected abstract void close();
+ protected abstract void connect(java.lang.String, int);
+ protected abstract void connect(java.net.InetAddress, int);
+ protected abstract void connect(java.net.SocketAddress, int);
+ protected abstract void create(boolean);
+ protected java.io.FileDescriptor getFileDescriptor();
+ protected java.net.InetAddress getInetAddress();
+ protected abstract java.io.InputStream getInputStream();
+ protected int getLocalPort();
+ protected abstract java.io.OutputStream getOutputStream();
+ protected int getPort();
+ protected abstract void listen(int);
+ protected abstract void sendUrgentData(int);
+ protected void setPerformancePreferences(int, int, int);
+ protected void shutdownInput();
+ protected void shutdownOutput();
+ protected boolean supportsUrgentData();
+ public java.lang.String toString();
+
+
+ protected java.net.InetAddress address;
+ protected java.io.FileDescriptor fd;
+ protected int localport;
+ protected int port;
+}
+
+-keep class java.net.SocketImplFactory {
+
+ public abstract java.net.SocketImpl createSocketImpl();
+
+
+}
+
+-keep class java.net.URI {
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.String, java.lang.String);
+ <init>(java.lang.String, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String);
+ <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ <init>(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+
+ public int compareTo(java.net.URI);
+ public int compareTo(java.lang.Object);
+ public static java.net.URI create(java.lang.String);
+ public boolean equals(java.lang.Object);
+ public java.lang.String getAuthority();
+ public java.lang.String getFragment();
+ public java.lang.String getHost();
+ public java.lang.String getPath();
+ public int getPort();
+ public java.lang.String getQuery();
+ public java.lang.String getRawAuthority();
+ public java.lang.String getRawFragment();
+ public java.lang.String getRawPath();
+ public java.lang.String getRawQuery();
+ public java.lang.String getRawSchemeSpecificPart();
+ public java.lang.String getRawUserInfo();
+ public java.lang.String getScheme();
+ public java.lang.String getSchemeSpecificPart();
+ public java.lang.String getUserInfo();
+ public int hashCode();
+ public boolean isAbsolute();
+ public boolean isOpaque();
+ public java.net.URI normalize();
+ public java.net.URI parseServerAuthority();
+ public java.net.URI relativize(java.net.URI);
+ public java.net.URI resolve(java.net.URI);
+ public java.net.URI resolve(java.lang.String);
+ public java.lang.String toASCIIString();
+ public java.lang.String toString();
+ public java.net.URL toURL();
+
+
+}
+
+-keep class java.net.URISyntaxException {
+ <init>(java.lang.String, java.lang.String, int);
+ <init>(java.lang.String, java.lang.String);
+
+ public int getIndex();
+ public java.lang.String getInput();
+ public java.lang.String getMessage();
+ public java.lang.String getReason();
+
+
+}
+
+-keep class java.net.URL {
+ <init>(java.lang.String);
+ <init>(java.net.URL, java.lang.String);
+ <init>(java.net.URL, java.lang.String, java.net.URLStreamHandler);
+ <init>(java.lang.String, java.lang.String, java.lang.String);
+ <init>(java.lang.String, java.lang.String, int, java.lang.String);
+ <init>(java.lang.String, java.lang.String, int, java.lang.String, java.net.URLStreamHandler);
+
+ public boolean equals(java.lang.Object);
+ public java.lang.String getAuthority();
+ public java.lang.Object getContent();
+ public java.lang.Object getContent(java.lang.Class[]);
+ public int getDefaultPort();
+ public java.lang.String getFile();
+ public java.lang.String getHost();
+ public java.lang.String getPath();
+ public int getPort();
+ public java.lang.String getProtocol();
+ public java.lang.String getQuery();
+ public java.lang.String getRef();
+ public java.lang.String getUserInfo();
+ public int hashCode();
+ public java.net.URLConnection openConnection();
+ public java.net.URLConnection openConnection(java.net.Proxy);
+ public java.io.InputStream openStream();
+ public boolean sameFile(java.net.URL);
+ protected void set(java.lang.String, java.lang.String, int, java.lang.String, java.lang.String);
+ protected void set(java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ public static synchronized void setURLStreamHandlerFactory(java.net.URLStreamHandlerFactory);
+ public java.lang.String toExternalForm();
+ public java.lang.String toString();
+ public java.net.URI toURI();
+
+
+}
+
+-keep class java.net.URLConnection {
+ <init>(java.net.URL);
+
+ public void addRequestProperty(java.lang.String, java.lang.String);
+ public abstract void connect();
+ public boolean getAllowUserInteraction();
+ public int getConnectTimeout();
+ public java.lang.Object getContent();
+ public java.lang.Object getContent(java.lang.Class[]);
+ public java.lang.String getContentEncoding();
+ public int getContentLength();
+ public java.lang.String getContentType();
+ public long getDate();
+ public static boolean getDefaultAllowUserInteraction();
+ public static java.lang.String getDefaultRequestProperty(java.lang.String);
+ public boolean getDefaultUseCaches();
+ public boolean getDoInput();
+ public boolean getDoOutput();
+ public long getExpiration();
+ public static java.net.FileNameMap getFileNameMap();
+ public java.lang.String getHeaderField(int);
+ public java.lang.String getHeaderField(java.lang.String);
+ public long getHeaderFieldDate(java.lang.String, long);
+ public int getHeaderFieldInt(java.lang.String, int);
+ public java.lang.String getHeaderFieldKey(int);
+ public java.util.Map getHeaderFields();
+ public long getIfModifiedSince();
+ public java.io.InputStream getInputStream();
+ public long getLastModified();
+ public java.io.OutputStream getOutputStream();
+ public java.security.Permission getPermission();
+ public int getReadTimeout();
+ public java.util.Map getRequestProperties();
+ public java.lang.String getRequestProperty(java.lang.String);
+ public java.net.URL getURL();
+ public boolean getUseCaches();
+ public static java.lang.String guessContentTypeFromName(java.lang.String);
+ public static java.lang.String guessContentTypeFromStream(java.io.InputStream);
+ public void setAllowUserInteraction(boolean);
+ public void setConnectTimeout(int);
+ public static synchronized void setContentHandlerFactory(java.net.ContentHandlerFactory);
+ public static void setDefaultAllowUserInteraction(boolean);
+ public static void setDefaultRequestProperty(java.lang.String, java.lang.String);
+ public void setDefaultUseCaches(boolean);
+ public void setDoInput(boolean);
+ public void setDoOutput(boolean);
+ public static void setFileNameMap(java.net.FileNameMap);
+ public void setIfModifiedSince(long);
+ public void setReadTimeout(int);
+ public void setRequestProperty(java.lang.String, java.lang.String);
+ public void setUseCaches(boolean);
+ public java.lang.String toString();
+
+
+ protected boolean allowUserInteraction;
+ protected boolean connected;
+ protected boolean doInput;
+ protected boolean doOutput;
+ protected long ifModifiedSince;
+ protected java.net.URL url;
+ protected boolean useCaches;
+}
+
+-keep class java.net.URLStreamHandler {
+ <init>();
+
+ protected boolean equals(java.net.URL, java.net.URL);
+ protected int getDefaultPort();
+ protected java.net.InetAddress getHostAddress(java.net.URL);
+ protected int hashCode(java.net.URL);
+ protected boolean hostsEqual(java.net.URL, java.net.URL);
+ protected abstract java.net.URLConnection openConnection(java.net.URL);
+ protected java.net.URLConnection openConnection(java.net.URL, java.net.Proxy);
+ protected void parseURL(java.net.URL, java.lang.String, int, int);
+ protected boolean sameFile(java.net.URL, java.net.URL);
+ protected void setURL(java.net.URL, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String);
+ protected void setURL(java.net.URL, java.lang.String, java.lang.String, int, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
+ protected java.lang.String toExternalForm(java.net.URL);
+
+
+}
+
+-keep class java.net.URLStreamHandlerFactory {
+
+ public abstract java.net.URLStreamHandler createURLStreamHandler(java.lang.String);
+
+
+}
+
+-keep class java.net.UnknownHostException {
+ <init>();
+ <init>(java.lang.String);
+
+
+
+}
+
+-keep class java.nio.Buffer {
+
+ public abstract java.lang.Object array();
+ public abstract int arrayOffset();
+ public int capacity();
+ public java.nio.Buffer clear();
+ public java.nio.Buffer flip();
+ public abstract boolean hasArray();
+ public boolean hasRemaining();
+ public abstract boolean isDirect();
+ public abstract boolean isReadOnly();
+ public int limit();
+ public java.nio.Buffer limit(int);
+ public java.nio.Buffer mark();
+ public int position();
+ public java.nio.Buffer position(int);
+ public int remaining();
+ public java.nio.Buffer reset();
+ public java.nio.Buffer rewind();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.nio.BufferOverflowException {
+ <init>();
+
+
+
+}
+
+-keep class java.nio.BufferUnderflowException {
+ <init>();
+
+
+
+}
+
+-keep class java.nio.ByteBuffer {
+
+ public static java.nio.ByteBuffer allocate(int);
+ public static java.nio.ByteBuffer allocateDirect(int);
+ public byte[] array();
+ public java.lang.Object array();
+ public int arrayOffset();
+ public abstract java.nio.CharBuffer asCharBuffer();
+ public abstract java.nio.DoubleBuffer asDoubleBuffer();
+ public abstract java.nio.FloatBuffer asFloatBuffer();
+ public abstract java.nio.IntBuffer asIntBuffer();
+ public abstract java.nio.LongBuffer asLongBuffer();
+ public abstract java.nio.ByteBuffer asReadOnlyBuffer();
+ public abstract java.nio.ShortBuffer asShortBuffer();
+ public abstract java.nio.ByteBuffer compact();
+ public int compareTo(java.nio.ByteBuffer);
+ public int compareTo(java.lang.Object);
+ public abstract java.nio.ByteBuffer duplicate();
+ public boolean equals(java.lang.Object);
+ public abstract byte get();
+ public java.nio.ByteBuffer get(byte[]);
+ public java.nio.ByteBuffer get(byte[], int, int);
+ public abstract byte get(int);
+ public abstract char getChar();
+ public abstract char getChar(int);
+ public abstract double getDouble();
+ public abstract double getDouble(int);
+ public abstract float getFloat();
+ public abstract float getFloat(int);
+ public abstract int getInt();
+ public abstract int getInt(int);
+ public abstract long getLong();
+ public abstract long getLong(int);
+ public abstract short getShort();
+ public abstract short getShort(int);
+ public boolean hasArray();
+ public int hashCode();
+ public abstract boolean isDirect();
+ public java.nio.ByteOrder order();
+ public java.nio.ByteBuffer order(java.nio.ByteOrder);
+ public abstract java.nio.ByteBuffer put(byte);
+ public java.nio.ByteBuffer put(byte[]);
+ public java.nio.ByteBuffer put(byte[], int, int);
+ public java.nio.ByteBuffer put(java.nio.ByteBuffer);
+ public abstract java.nio.ByteBuffer put(int, byte);
+ public abstract java.nio.ByteBuffer putChar(char);
+ public abstract java.nio.ByteBuffer putChar(int, char);
+ public abstract java.nio.ByteBuffer putDouble(double);
+ public abstract java.nio.ByteBuffer putDouble(int, double);
+ public abstract java.nio.ByteBuffer putFloat(float);
+ public abstract java.nio.ByteBuffer putFloat(int, float);
+ public abstract java.nio.ByteBuffer putInt(int);
+ public abstract java.nio.ByteBuffer putInt(int, int);
+ public abstract java.nio.ByteBuffer putLong(long);
+ public abstract java.nio.ByteBuffer putLong(int, long);
+ public abstract java.nio.ByteBuffer putShort(short);
+ public abstract java.nio.ByteBuffer putShort(int, short);
+ public abstract java.nio.ByteBuffer slice();
+ public static java.nio.ByteBuffer wrap(byte[]);
+ public static java.nio.ByteBuffer wrap(byte[], int, int);
+
+
+}
+
+-keep class java.nio.ByteOrder {
+
+ public static java.nio.ByteOrder nativeOrder();
+ public java.lang.String toString();
+
+
+ public static java.nio.ByteOrder BIG_ENDIAN;
+ public static java.nio.ByteOrder LITTLE_ENDIAN;
+}
+
+-keep class java.nio.CharBuffer {
+
+ public static java.nio.CharBuffer allocate(int);
+ public java.nio.CharBuffer append(char);
+ public java.nio.CharBuffer append(java.lang.CharSequence);
+ public java.nio.CharBuffer append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence, int, int);
+ public java.lang.Appendable append(java.lang.CharSequence);
+ public java.lang.Appendable append(char);
+ public char[] array();
+ public java.lang.Object array();
+ public int arrayOffset();
+ public abstract java.nio.CharBuffer asReadOnlyBuffer();
+ public char charAt(int);
+ public abstract java.nio.CharBuffer compact();
+ public int compareTo(java.nio.CharBuffer);
+ public int compareTo(java.lang.Object);
+ public abstract java.nio.CharBuffer duplicate();
+ public boolean equals(java.lang.Object);
+ public abstract char get();
+ public java.nio.CharBuffer get(char[]);
+ public java.nio.CharBuffer get(char[], int, int);
+ public abstract char get(int);
+ public boolean hasArray();
+ public int hashCode();
+ public abstract boolean isDirect();
+ public int length();
+ public abstract java.nio.ByteOrder order();
+ public abstract java.nio.CharBuffer put(char);
+ public java.nio.CharBuffer put(char[]);
+ public java.nio.CharBuffer put(char[], int, int);
+ public java.nio.CharBuffer put(java.nio.CharBuffer);
+ public abstract java.nio.CharBuffer put(int, char);
+ public java.nio.CharBuffer put(java.lang.String);
+ public java.nio.CharBuffer put(java.lang.String, int, int);
+ public int read(java.nio.CharBuffer);
+ public abstract java.nio.CharBuffer slice();
+ public abstract java.nio.CharBuffer subSequence(int, int);
+ public java.lang.CharSequence subSequence(int, int);
+ public java.lang.String toString();
+ public static java.nio.CharBuffer wrap(char[]);
+ public static java.nio.CharBuffer wrap(char[], int, int);
+ public static java.nio.CharBuffer wrap(java.lang.CharSequence);
+ public static java.nio.CharBuffer wrap(java.lang.CharSequence, int, int);
+
+
+}
+
+-keep class java.nio.DoubleBuffer {
+
+ public static java.nio.DoubleBuffer allocate(int);
+ public double[] array();
+ public java.lang.Object array();
+ public int arrayOffset();
+ public abstract java.nio.DoubleBuffer asReadOnlyBuffer();
+ public abstract java.nio.DoubleBuffer compact();
+ public int compareTo(java.nio.DoubleBuffer);
+ public int compareTo(java.lang.Object);
+ public abstract java.nio.DoubleBuffer duplicate();
+ public boolean equals(java.lang.Object);
+ public abstract double get();
+ public java.nio.DoubleBuffer get(double[]);
+ public java.nio.DoubleBuffer get(double[], int, int);
+ public abstract double get(int);
+ public boolean hasArray();
+ public int hashCode();
+ public abstract boolean isDirect();
+ public abstract java.nio.ByteOrder order();
+ public abstract java.nio.DoubleBuffer put(double);
+ public java.nio.DoubleBuffer put(double[]);
+ public java.nio.DoubleBuffer put(double[], int, int);
+ public java.nio.DoubleBuffer put(java.nio.DoubleBuffer);
+ public abstract java.nio.DoubleBuffer put(int, double);
+ public abstract java.nio.DoubleBuffer slice();
+ public static java.nio.DoubleBuffer wrap(double[]);
+ public static java.nio.DoubleBuffer wrap(double[], int, int);
+
+
+}
+
+-keep class java.nio.FloatBuffer {
+
+ public static java.nio.FloatBuffer allocate(int);
+ public float[] array();
+ public java.lang.Object array();
+ public int arrayOffset();
+ public abstract java.nio.FloatBuffer asReadOnlyBuffer();
+ public abstract java.nio.FloatBuffer compact();
+ public int compareTo(java.nio.FloatBuffer);
+ public int compareTo(java.lang.Object);
+ public abstract java.nio.FloatBuffer duplicate();
+ public boolean equals(java.lang.Object);
+ public abstract float get();
+ public java.nio.FloatBuffer get(float[]);
+ public java.nio.FloatBuffer get(float[], int, int);
+ public abstract float get(int);
+ public boolean hasArray();
+ public int hashCode();
+ public abstract boolean isDirect();
+ public abstract java.nio.ByteOrder order();
+ public abstract java.nio.FloatBuffer put(float);
+ public java.nio.FloatBuffer put(float[]);
+ public java.nio.FloatBuffer put(float[], int, int);
+ public java.nio.FloatBuffer put(java.nio.FloatBuffer);
+ public abstract java.nio.FloatBuffer put(int, float);
+ public abstract java.nio.FloatBuffer slice();
+ public static java.nio.FloatBuffer wrap(float[]);
+ public static java.nio.FloatBuffer wrap(float[], int, int);
+
+
+}
+
+-keep class java.nio.IntBuffer {
+
+ public static java.nio.IntBuffer allocate(int);
+ public int[] array();
+ public java.lang.Object array();
+ public int arrayOffset();
+ public abstract java.nio.IntBuffer asReadOnlyBuffer();
+ public abstract java.nio.IntBuffer compact();
+ public int compareTo(java.nio.IntBuffer);
+ public int compareTo(java.lang.Object);
+ public abstract java.nio.IntBuffer duplicate();
+ public boolean equals(java.lang.Object);
+ public abstract int get();
+ public java.nio.IntBuffer get(int[]);
+ public java.nio.IntBuffer get(int[], int, int);
+ public abstract int get(int);
+ public boolean hasArray();
+ public int hashCode();
+ public abstract boolean isDirect();
+ public abstract java.nio.ByteOrder order();
+ public abstract java.nio.IntBuffer put(int);
+ public java.nio.IntBuffer put(int[]);
+ public java.nio.IntBuffer put(int[], int, int);
+ public java.nio.IntBuffer put(java.nio.IntBuffer);
+ public abstract java.nio.IntBuffer put(int, int);
+ public abstract java.nio.IntBuffer slice();
+ public static java.nio.IntBuffer wrap(int[]);
+ public static java.nio.IntBuffer wrap(int[], int, int);
+
+
+}
+
+-keep class java.nio.LongBuffer {
+
+ public static java.nio.LongBuffer allocate(int);
+ public long[] array();
+ public java.lang.Object array();
+ public int arrayOffset();
+ public abstract java.nio.LongBuffer asReadOnlyBuffer();
+ public abstract java.nio.LongBuffer compact();
+ public int compareTo(java.nio.LongBuffer);
+ public int compareTo(java.lang.Object);
+ public abstract java.nio.LongBuffer duplicate();
+ public boolean equals(java.lang.Object);
+ public abstract long get();
+ public java.nio.LongBuffer get(long[]);
+ public java.nio.LongBuffer get(long[], int, int);
+ public abstract long get(int);
+ public boolean hasArray();
+ public int hashCode();
+ public abstract boolean isDirect();
+ public abstract java.nio.ByteOrder order();
+ public abstract java.nio.LongBuffer put(long);
+ public java.nio.LongBuffer put(long[]);
+ public java.nio.LongBuffer put(long[], int, int);
+ public java.nio.LongBuffer put(java.nio.LongBuffer);
+ public abstract java.nio.LongBuffer put(int, long);
+ public abstract java.nio.LongBuffer slice();
+ public static java.nio.LongBuffer wrap(long[]);
+ public static java.nio.LongBuffer wrap(long[], int, int);
+
+
+}
+
+-keep class java.nio.MappedByteBuffer {
+
+ public java.nio.MappedByteBuffer force();
+ public boolean isLoaded();
+ public java.nio.MappedByteBuffer load();
+
+
+}
+
+-keep class java.nio.ShortBuffer {
+
+ public static java.nio.ShortBuffer allocate(int);
+ public short[] array();
+ public java.lang.Object array();
+ public int arrayOffset();
+ public abstract java.nio.ShortBuffer asReadOnlyBuffer();
+ public abstract java.nio.ShortBuffer compact();
+ public int compareTo(java.nio.ShortBuffer);
+ public int compareTo(java.lang.Object);
+ public abstract java.nio.ShortBuffer duplicate();
+ public boolean equals(java.lang.Object);
+ public abstract short get();
+ public java.nio.ShortBuffer get(short[]);
+ public java.nio.ShortBuffer get(short[], int, int);
+ public abstract short get(int);
+ public boolean hasArray();
+ public int hashCode();
+ public abstract boolean isDirect();
+ public abstract java.nio.ByteOrder order();
+ public abstract java.nio.ShortBuffer put(short);
+ public java.nio.ShortBuffer put(short[]);
+ public java.nio.ShortBuffer put(short[], int, int);
+ public java.nio.ShortBuffer put(java.nio.ShortBuffer);
+ public abstract java.nio.ShortBuffer put(int, short);
+ public abstract java.nio.ShortBuffer slice();
+ public static java.nio.ShortBuffer wrap(short[]);
+ public static java.nio.ShortBuffer wrap(short[], int, int);
+
+
+}
+
+-keep class java.nio.channels.AsynchronousCloseException {
+ <init>();
+
+
+
+}
+
+-keep class java.nio.channels.Channel {
+
+ public abstract void close();
+ public abstract boolean isOpen();
+
+
+}
+
+-keep class java.nio.channels.ClosedChannelException {
+ <init>();
+
+
+
+}
+
+-keep class java.nio.channels.DatagramChannel {
+ <init>(java.nio.channels.spi.SelectorProvider);
+
+ public abstract java.nio.channels.DatagramChannel connect(java.net.SocketAddress);
+ public abstract java.nio.channels.DatagramChannel disconnect();
+ public abstract boolean isConnected();
+ public static java.nio.channels.DatagramChannel open();
+ public abstract int read(java.nio.ByteBuffer);
+ public abstract long read(java.nio.ByteBuffer[], int, int);
+ public synchronized long read(java.nio.ByteBuffer[]);
+ public abstract java.net.SocketAddress receive(java.nio.ByteBuffer);
+ public abstract int send(java.nio.ByteBuffer, java.net.SocketAddress);
+ public abstract java.net.DatagramSocket socket();
+ public int validOps();
+ public abstract int write(java.nio.ByteBuffer);
+ public abstract long write(java.nio.ByteBuffer[], int, int);
+ public synchronized long write(java.nio.ByteBuffer[]);
+
+
+}
+
+-keep class java.nio.channels.FileChannel {
+ <init>();
+
+ public abstract void force(boolean);
+ public java.nio.channels.FileLock lock();
+ public abstract java.nio.channels.FileLock lock(long, long, boolean);
+ public abstract java.nio.MappedByteBuffer map(java.nio.channels.FileChannel$MapMode, long, long);
+ public abstract long position();
+ public abstract java.nio.channels.FileChannel position(long);
+ public abstract int read(java.nio.ByteBuffer);
+ public abstract int read(java.nio.ByteBuffer, long);
+ public long read(java.nio.ByteBuffer[]);
+ public abstract long read(java.nio.ByteBuffer[], int, int);
+ public abstract long size();
+ public abstract long transferFrom(java.nio.channels.ReadableByteChannel, long, long);
+ public abstract long transferTo(long, long, java.nio.channels.WritableByteChannel);
+ public abstract java.nio.channels.FileChannel truncate(long);
+ public java.nio.channels.FileLock tryLock();
+ public abstract java.nio.channels.FileLock tryLock(long, long, boolean);
+ public abstract int write(java.nio.ByteBuffer);
+ public abstract int write(java.nio.ByteBuffer, long);
+ public long write(java.nio.ByteBuffer[]);
+ public abstract long write(java.nio.ByteBuffer[], int, int);
+
+
+}
+
+-keep class java.nio.channels.FileChannel$MapMode {
+
+ public java.lang.String toString();
+
+
+ public static java.nio.channels.FileChannel$MapMode PRIVATE;
+ public static java.nio.channels.FileChannel$MapMode READ_ONLY;
+ public static java.nio.channels.FileChannel$MapMode READ_WRITE;
+}
+
+-keep class java.nio.channels.FileLock {
+ <init>(java.nio.channels.FileChannel, long, long, boolean);
+
+ public java.nio.channels.FileChannel channel();
+ public void close();
+ public boolean isShared();
+ public abstract boolean isValid();
+ public boolean overlaps(long, long);
+ public long position();
+ public abstract void release();
+ public long size();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.nio.channels.Pipe {
+ <init>();
+
+ public static java.nio.channels.Pipe open();
+ public abstract java.nio.channels.Pipe$SinkChannel sink();
+ public abstract java.nio.channels.Pipe$SourceChannel source();
+
+
+}
+
+-keep class java.nio.channels.Pipe$SinkChannel {
+ <init>(java.nio.channels.spi.SelectorProvider);
+
+ public int validOps();
+
+
+}
+
+-keep class java.nio.channels.Pipe$SourceChannel {
+ <init>(java.nio.channels.spi.SelectorProvider);
+
+ public int validOps();
+
+
+}
+
+-keep class java.nio.channels.ReadableByteChannel {
+
+ public abstract int read(java.nio.ByteBuffer);
+
+
+}
+
+-keep class java.nio.channels.SelectableChannel {
+ <init>();
+
+ public abstract java.lang.Object blockingLock();
+ public abstract java.nio.channels.SelectableChannel configureBlocking(boolean);
+ public abstract boolean isBlocking();
+ public abstract boolean isRegistered();
+ public abstract java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
+ public abstract java.nio.channels.spi.SelectorProvider provider();
+ public java.nio.channels.SelectionKey register(java.nio.channels.Selector, int);
+ public abstract java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, java.lang.Object);
+ public abstract int validOps();
+
+
+}
+
+-keep class java.nio.channels.SelectionKey {
+ <init>();
+
+ public java.lang.Object attach(java.lang.Object);
+ public java.lang.Object attachment();
+ public abstract void cancel();
+ public abstract java.nio.channels.SelectableChannel channel();
+ public abstract int interestOps();
+ public abstract java.nio.channels.SelectionKey interestOps(int);
+ public boolean isAcceptable();
+ public boolean isConnectable();
+ public boolean isReadable();
+ public abstract boolean isValid();
+ public boolean isWritable();
+ public abstract int readyOps();
+ public abstract java.nio.channels.Selector selector();
+
+
+ public static int OP_ACCEPT;
+ public static int OP_CONNECT;
+ public static int OP_READ;
+ public static int OP_WRITE;
+}
+
+-keep class java.nio.channels.Selector {
+ <init>();
+
+ public abstract void close();
+ public abstract boolean isOpen();
+ public abstract java.util.Set keys();
+ public static java.nio.channels.Selector open();
+ public abstract java.nio.channels.spi.SelectorProvider provider();
+ public abstract int select();
+ public abstract int select(long);
+ public abstract int selectNow();
+ public abstract java.util.Set selectedKeys();
+ public abstract java.nio.channels.Selector wakeup();
+
+
+}
+
+-keep class java.nio.channels.ServerSocketChannel {
+ <init>(java.nio.channels.spi.SelectorProvider);
+
+ public abstract java.nio.channels.SocketChannel accept();
+ public static java.nio.channels.ServerSocketChannel open();
+ public abstract java.net.ServerSocket socket();
+ public int validOps();
+
+
+}
+
+-keep class java.nio.channels.SocketChannel {
+ <init>(java.nio.channels.spi.SelectorProvider);
+
+ public abstract boolean connect(java.net.SocketAddress);
+ public abstract boolean finishConnect();
+ public abstract boolean isConnected();
+ public abstract boolean isConnectionPending();
+ public static java.nio.channels.SocketChannel open();
+ public static java.nio.channels.SocketChannel open(java.net.SocketAddress);
+ public abstract int read(java.nio.ByteBuffer);
+ public abstract long read(java.nio.ByteBuffer[], int, int);
+ public synchronized long read(java.nio.ByteBuffer[]);
+ public abstract java.net.Socket socket();
+ public int validOps();
+ public abstract int write(java.nio.ByteBuffer);
+ public abstract long write(java.nio.ByteBuffer[], int, int);
+ public synchronized long write(java.nio.ByteBuffer[]);
+
+
+}
+
+-keep class java.nio.channels.WritableByteChannel {
+
+ public abstract int write(java.nio.ByteBuffer);
+
+
+}
+
+-keep class java.nio.channels.spi.AbstractInterruptibleChannel {
+ <init>();
+
+ protected void begin();
+ public void close();
+ protected void end(boolean);
+ protected abstract void implCloseChannel();
+ public synchronized boolean isOpen();
+
+
+}
+
+-keep class java.nio.channels.spi.AbstractSelectableChannel {
+ <init>(java.nio.channels.spi.SelectorProvider);
+
+ public java.lang.Object blockingLock();
+ public java.nio.channels.SelectableChannel configureBlocking(boolean);
+ protected synchronized void implCloseChannel();
+ protected abstract void implCloseSelectableChannel();
+ protected abstract void implConfigureBlocking(boolean);
+ public boolean isBlocking();
+ public synchronized boolean isRegistered();
+ public synchronized java.nio.channels.SelectionKey keyFor(java.nio.channels.Selector);
+ public java.nio.channels.spi.SelectorProvider provider();
+ public java.nio.channels.SelectionKey register(java.nio.channels.Selector, int, java.lang.Object);
+
+
+}
+
+-keep class java.nio.channels.spi.AbstractSelectionKey {
+ <init>();
+
+ public void cancel();
+ public boolean isValid();
+
+
+}
+
+-keep class java.nio.channels.spi.AbstractSelector {
+ <init>(java.nio.channels.spi.SelectorProvider);
+
+ protected void begin();
+ protected java.util.Set cancelledKeys();
+ public void close();
+ protected void deregister(java.nio.channels.spi.AbstractSelectionKey);
+ protected void end();
+ protected abstract void implCloseSelector();
+ public boolean isOpen();
+ public java.nio.channels.spi.SelectorProvider provider();
+ protected abstract java.nio.channels.SelectionKey register(java.nio.channels.spi.AbstractSelectableChannel, int, java.lang.Object);
+
+
+}
+
+-keep class java.nio.channels.spi.SelectorProvider {
+ <init>();
+
+ public java.nio.channels.Channel inheritedChannel();
+ public abstract java.nio.channels.DatagramChannel openDatagramChannel();
+ public abstract java.nio.channels.Pipe openPipe();
+ public abstract java.nio.channels.spi.AbstractSelector openSelector();
+ public abstract java.nio.channels.ServerSocketChannel openServerSocketChannel();
+ public abstract java.nio.channels.SocketChannel openSocketChannel();
+ public static synchronized java.nio.channels.spi.SelectorProvider provider();
+
+
+}
+
+-keep class java.nio.charset.CharacterCodingException {
+ <init>();
+
+
+
+}
+
+-keep class java.nio.charset.Charset {
+ <init>(java.lang.String, java.lang.String[]);
+
+ public java.util.Set aliases();
+ public static java.util.SortedMap availableCharsets();
+ public boolean canEncode();
+ public int compareTo(java.nio.charset.Charset);
+ public int compareTo(java.lang.Object);
+ public abstract boolean contains(java.nio.charset.Charset);
+ public java.nio.CharBuffer decode(java.nio.ByteBuffer);
+ public static java.nio.charset.Charset defaultCharset();
+ public java.lang.String displayName();
+ public java.lang.String displayName(java.util.Locale);
+ public java.nio.ByteBuffer encode(java.nio.CharBuffer);
+ public java.nio.ByteBuffer encode(java.lang.String);
+ public boolean equals(java.lang.Object);
+ public static java.nio.charset.Charset forName(java.lang.String);
+ public int hashCode();
+ public boolean isRegistered();
+ public static boolean isSupported(java.lang.String);
+ public java.lang.String name();
+ public abstract java.nio.charset.CharsetDecoder newDecoder();
+ public abstract java.nio.charset.CharsetEncoder newEncoder();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.nio.charset.CharsetDecoder {
+ <init>(java.nio.charset.Charset, float, float);
+
+ public float averageCharsPerByte();
+ public java.nio.charset.Charset charset();
+ public java.nio.CharBuffer decode(java.nio.ByteBuffer);
+ public java.nio.charset.CoderResult decode(java.nio.ByteBuffer, java.nio.CharBuffer, boolean);
+ protected abstract java.nio.charset.CoderResult decodeLoop(java.nio.ByteBuffer, java.nio.CharBuffer);
+ public java.nio.charset.Charset detectedCharset();
+ public java.nio.charset.CoderResult flush(java.nio.CharBuffer);
+ protected java.nio.charset.CoderResult implFlush(java.nio.CharBuffer);
+ protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
+ protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
+ protected void implReplaceWith(java.lang.String);
+ protected void implReset();
+ public boolean isAutoDetecting();
+ public boolean isCharsetDetected();
+ public java.nio.charset.CodingErrorAction malformedInputAction();
+ public float maxCharsPerByte();
+ public java.nio.charset.CharsetDecoder onMalformedInput(java.nio.charset.CodingErrorAction);
+ public java.nio.charset.CharsetDecoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
+ public java.nio.charset.CharsetDecoder replaceWith(java.lang.String);
+ public java.lang.String replacement();
+ public java.nio.charset.CharsetDecoder reset();
+ public java.nio.charset.CodingErrorAction unmappableCharacterAction();
+
+
+}
+
+-keep class java.nio.charset.CharsetEncoder {
+ <init>(java.nio.charset.Charset, float, float);
+ <init>(java.nio.charset.Charset, float, float, byte[]);
+
+ public float averageBytesPerChar();
+ public boolean canEncode(char);
+ public boolean canEncode(java.lang.CharSequence);
+ public java.nio.charset.Charset charset();
+ public java.nio.ByteBuffer encode(java.nio.CharBuffer);
+ public java.nio.charset.CoderResult encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean);
+ protected abstract java.nio.charset.CoderResult encodeLoop(java.nio.CharBuffer, java.nio.ByteBuffer);
+ public java.nio.charset.CoderResult flush(java.nio.ByteBuffer);
+ protected java.nio.charset.CoderResult implFlush(java.nio.ByteBuffer);
+ protected void implOnMalformedInput(java.nio.charset.CodingErrorAction);
+ protected void implOnUnmappableCharacter(java.nio.charset.CodingErrorAction);
+ protected void implReplaceWith(byte[]);
+ protected void implReset();
+ public boolean isLegalReplacement(byte[]);
+ public java.nio.charset.CodingErrorAction malformedInputAction();
+ public float maxBytesPerChar();
+ public java.nio.charset.CharsetEncoder onMalformedInput(java.nio.charset.CodingErrorAction);
+ public java.nio.charset.CharsetEncoder onUnmappableCharacter(java.nio.charset.CodingErrorAction);
+ public java.nio.charset.CharsetEncoder replaceWith(byte[]);
+ public byte[] replacement();
+ public java.nio.charset.CharsetEncoder reset();
+ public java.nio.charset.CodingErrorAction unmappableCharacterAction();
+
+
+}
+
+-keep class java.nio.charset.CoderResult {
+
+ public boolean isError();
+ public boolean isMalformed();
+ public boolean isOverflow();
+ public boolean isUnderflow();
+ public boolean isUnmappable();
+ public int length();
+ public static synchronized java.nio.charset.CoderResult malformedForLength(int);
+ public void throwException();
+ public java.lang.String toString();
+ public static synchronized java.nio.charset.CoderResult unmappableForLength(int);
+
+
+ public static java.nio.charset.CoderResult OVERFLOW;
+ public static java.nio.charset.CoderResult UNDERFLOW;
+}
+
+-keep class java.nio.charset.CodingErrorAction {
+
+ public java.lang.String toString();
+
+
+ public static java.nio.charset.CodingErrorAction IGNORE;
+ public static java.nio.charset.CodingErrorAction REPLACE;
+ public static java.nio.charset.CodingErrorAction REPORT;
+}
+
+-keep class java.nio.charset.MalformedInputException {
+ <init>(int);
+
+ public int getInputLength();
+ public java.lang.String getMessage();
+
+
+}
+
+-keep class java.nio.charset.UnmappableCharacterException {
+ <init>(int);
+
+ public int getInputLength();
+ public java.lang.String getMessage();
+
+
+}
+
+-keep class java.security.CodeSigner {
+ <init>(java.security.cert.CertPath, java.security.Timestamp);
+
+ public boolean equals(java.lang.Object);
+ public java.security.cert.CertPath getSignerCertPath();
+ public java.security.Timestamp getTimestamp();
+ public int hashCode();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.security.CodeSource {
+ <init>(java.net.URL, java.security.cert.Certificate[]);
+ <init>(java.net.URL, java.security.CodeSigner[]);
+
+ public java.security.cert.Certificate[] getCertificates();
+ public java.security.CodeSigner[] getCodeSigners();
+ public java.net.URL getLocation();
+ public boolean implies(java.security.CodeSource);
+
+
+}
+
+-keep class java.security.GeneralSecurityException {
+ <init>(java.lang.String);
+ <init>();
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.security.InvalidKeyException {
+ <init>(java.lang.String);
+ <init>();
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.security.KeyException {
+ <init>(java.lang.String);
+ <init>();
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.security.NoSuchAlgorithmException {
+ <init>(java.lang.String);
+ <init>();
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.security.NoSuchProviderException {
+ <init>(java.lang.String);
+ <init>();
+
+
+
+}
+
+-keep class java.security.Permission {
+ <init>(java.lang.String);
+
+ public void checkGuard(java.lang.Object);
+ public abstract java.lang.String getActions();
+ public java.lang.String getName();
+ public abstract boolean implies(java.security.Permission);
+ public java.security.PermissionCollection newPermissionCollection();
+
+
+}
+
+-keep class java.security.PermissionCollection {
+ <init>();
+
+ public abstract void add(java.security.Permission);
+ public abstract java.util.Enumeration elements();
+ public abstract boolean implies(java.security.Permission);
+ public boolean isReadOnly();
+ public void setReadOnly();
+
+
+}
+
+-keep class java.security.Principal {
+
+ public abstract boolean equals(java.lang.Object);
+ public abstract java.lang.String getName();
+ public abstract int hashCode();
+ public abstract java.lang.String toString();
+
+
+}
+
+-keep class java.security.ProtectionDomain {
+ <init>(java.security.CodeSource, java.security.PermissionCollection);
+ <init>(java.security.CodeSource, java.security.PermissionCollection, java.lang.ClassLoader, java.security.Principal[]);
+
+ public java.lang.ClassLoader getClassLoader();
+ public java.security.CodeSource getCodeSource();
+ public java.security.PermissionCollection getPermissions();
+ public java.security.Principal[] getPrincipals();
+ public boolean implies(java.security.Permission);
+
+
+}
+
+-keep class java.security.PublicKey {
+
+
+
+ public static long serialVersionUID;
+}
+
+-keep class java.security.SignatureException {
+ <init>(java.lang.String);
+ <init>();
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.security.Timestamp {
+ <init>(java.util.Date, java.security.cert.CertPath);
+
+ public boolean equals(java.lang.Object);
+ public java.security.cert.CertPath getSignerCertPath();
+ public java.util.Date getTimestamp();
+ public int hashCode();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.security.cert.CertPath {
+ <init>(java.lang.String);
+
+ public boolean equals(java.lang.Object);
+ public abstract java.util.List getCertificates();
+ public abstract byte[] getEncoded();
+ public abstract byte[] getEncoded(java.lang.String);
+ public abstract java.util.Iterator getEncodings();
+ public java.lang.String getType();
+ public int hashCode();
+ public java.lang.String toString();
+ protected java.lang.Object writeReplace();
+
+
+}
+
+-keep class java.security.cert.Certificate {
+ <init>(java.lang.String);
+
+ public boolean equals(java.lang.Object);
+ public abstract byte[] getEncoded();
+ public abstract java.security.PublicKey getPublicKey();
+ public java.lang.String getType();
+ public int hashCode();
+ public abstract java.lang.String toString();
+ public abstract void verify(java.security.PublicKey);
+ public abstract void verify(java.security.PublicKey, java.lang.String);
+ protected java.lang.Object writeReplace();
+
+
+}
+
+-keep class java.security.cert.CertificateEncodingException {
+ <init>(java.lang.String);
+ <init>();
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.security.cert.CertificateException {
+ <init>(java.lang.String);
+ <init>();
+ <init>(java.lang.String, java.lang.Throwable);
+ <init>(java.lang.Throwable);
+
+
+
+}
+
+-keep class java.util.AbstractCollection {
+ <init>();
+
+ public boolean add(java.lang.Object);
+ public boolean addAll(java.util.Collection);
+ public void clear();
+ public boolean contains(java.lang.Object);
+ public boolean containsAll(java.util.Collection);
+ public boolean isEmpty();
+ public abstract java.util.Iterator iterator();
+ public boolean remove(java.lang.Object);
+ public boolean removeAll(java.util.Collection);
+ public boolean retainAll(java.util.Collection);
+ public abstract int size();
+ public java.lang.Object[] toArray();
+ public java.lang.Object[] toArray(java.lang.Object[]);
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.util.AbstractList {
+ <init>();
+
+ public void add(int, java.lang.Object);
+ public boolean add(java.lang.Object);
+ public boolean addAll(int, java.util.Collection);
+ public void clear();
+ public boolean equals(java.lang.Object);
+ public abstract java.lang.Object get(int);
+ public int hashCode();
+ public int indexOf(java.lang.Object);
+ public java.util.Iterator iterator();
+ public int lastIndexOf(java.lang.Object);
+ public java.util.ListIterator listIterator();
+ public java.util.ListIterator listIterator(int);
+ public java.lang.Object remove(int);
+ protected void removeRange(int, int);
+ public java.lang.Object set(int, java.lang.Object);
+ public java.util.List subList(int, int);
+
+
+ protected transient int modCount;
+}
+
+-keep class java.util.AbstractMap {
+ <init>();
+
+ public void clear();
+ protected java.lang.Object clone();
+ public boolean containsKey(java.lang.Object);
+ public boolean containsValue(java.lang.Object);
+ public abstract java.util.Set entrySet();
+ public boolean equals(java.lang.Object);
+ public java.lang.Object get(java.lang.Object);
+ public int hashCode();
+ public boolean isEmpty();
+ public java.util.Set keySet();
+ public java.lang.Object put(java.lang.Object, java.lang.Object);
+ public void putAll(java.util.Map);
+ public java.lang.Object remove(java.lang.Object);
+ public int size();
+ public java.lang.String toString();
+ public java.util.Collection values();
+
+
+}
+
+-keep class java.util.ArrayList {
+ <init>(int);
+ <init>();
+ <init>(java.util.Collection);
+
+ public boolean add(java.lang.Object);
+ public void add(int, java.lang.Object);
+ public boolean addAll(java.util.Collection);
+ public boolean addAll(int, java.util.Collection);
+ public void clear();
+ public java.lang.Object clone();
+ public boolean contains(java.lang.Object);
+ public void ensureCapacity(int);
+ public boolean equals(java.lang.Object);
+ public java.lang.Object get(int);
+ public int hashCode();
+ public int indexOf(java.lang.Object);
+ public boolean isEmpty();
+ public java.util.Iterator iterator();
+ public int lastIndexOf(java.lang.Object);
+ public java.lang.Object remove(int);
+ public boolean remove(java.lang.Object);
+ protected void removeRange(int, int);
+ public java.lang.Object set(int, java.lang.Object);
+ public int size();
+ public java.lang.Object[] toArray();
+ public java.lang.Object[] toArray(java.lang.Object[]);
+ public void trimToSize();
+
+
+}
+
+-keep class java.util.Collection {
+
+ public abstract boolean add(java.lang.Object);
+ public abstract boolean addAll(java.util.Collection);
+ public abstract void clear();
+ public abstract boolean contains(java.lang.Object);
+ public abstract boolean containsAll(java.util.Collection);
+ public abstract boolean equals(java.lang.Object);
+ public abstract int hashCode();
+ public abstract boolean isEmpty();
+ public abstract java.util.Iterator iterator();
+ public abstract boolean remove(java.lang.Object);
+ public abstract boolean removeAll(java.util.Collection);
+ public abstract boolean retainAll(java.util.Collection);
+ public abstract int size();
+ public abstract java.lang.Object[] toArray();
+ public abstract java.lang.Object[] toArray(java.lang.Object[]);
+
+
+}
+
+-keep class java.util.Comparator {
+
+ public abstract int compare(java.lang.Object, java.lang.Object);
+ public abstract boolean equals(java.lang.Object);
+
+
+}
+
+-keep class java.util.Date {
+ <init>();
+ <init>(int, int, int);
+ <init>(int, int, int, int, int);
+ <init>(int, int, int, int, int, int);
+ <init>(long);
+ <init>(java.lang.String);
+
+ public static long UTC(int, int, int, int, int, int);
+ public boolean after(java.util.Date);
+ public boolean before(java.util.Date);
+ public java.lang.Object clone();
+ public int compareTo(java.util.Date);
+ public int compareTo(java.lang.Object);
+ public boolean equals(java.lang.Object);
+ public int getDate();
+ public int getDay();
+ public int getHours();
+ public int getMinutes();
+ public int getMonth();
+ public int getSeconds();
+ public long getTime();
+ public int getTimezoneOffset();
+ public int getYear();
+ public int hashCode();
+ public static long parse(java.lang.String);
+ public void setDate(int);
+ public void setHours(int);
+ public void setMinutes(int);
+ public void setMonth(int);
+ public void setSeconds(int);
+ public void setTime(long);
+ public void setYear(int);
+ public java.lang.String toGMTString();
+ public java.lang.String toLocaleString();
+ public java.lang.String toString();
+
+
+}
+
+-keep class java.util.Enumeration {
+
+ public abstract boolean hasMoreElements();
+ public abstract java.lang.Object nextElement();
+
+
+}
+
+-keep class java.util.HashMap {
+ <init>();
+ <init>(int);
+ <init>(int, float);
+ <init>(java.util.Map);
+
+ public void clear();
+ public java.lang.Object clone();
+ public boolean containsKey(java.lang.Object);
+ public boolean containsValue(java.lang.Object);
+ public java.util.Set entrySet();
+ public java.lang.Object get(java.lang.Object);
+ public boolean isEmpty();
+ public java.util.Set keySet();
+ public java.lang.Object put(java.lang.Object, java.lang.Object);
+ public void putAll(java.util.Map);
+ public java.lang.Object remove(java.lang.Object);
+ public int size();
+ public java.util.Collection values();
+
+
+}
+
+-keep class java.util.Iterator {
+
+ public abstract boolean hasNext();
+ public abstract java.lang.Object next();
+ public abstract void remove();
+
+
+}
+
+-keep class java.util.List {
+
+ public abstract void add(int, java.lang.Object);
+ public abstract boolean add(java.lang.Object);
+ public abstract boolean addAll(int, java.util.Collection);
+ public abstract boolean addAll(java.util.Collection);
+ public abstract void clear();
+ public abstract boolean contains(java.lang.Object);
+ public abstract boolean containsAll(java.util.Collection);
+ public abstract boolean equals(java.lang.Object);
+ public abstract java.lang.Object get(int);
+ public abstract int hashCode();
+ public abstract int indexOf(java.lang.Object);
+ public abstract boolean isEmpty();
+ public abstract java.util.Iterator iterator();
+ public abstract int lastIndexOf(java.lang.Object);
+ public abstract java.util.ListIterator listIterator();
+ public abstract java.util.ListIterator listIterator(int);
+ public abstract java.lang.Object remove(int);
+ public abstract boolean remove(java.lang.Object);
+ public abstract boolean removeAll(java.util.Collection);
+ public abstract boolean retainAll(java.util.Collection);
+ public abstract java.lang.Object set(int, java.lang.Object);
+ public abstract int size();
+ public abstract java.util.List subList(int, int);
+ public abstract java.lang.Object[] toArray();
+ public abstract java.lang.Object[] toArray(java.lang.Object[]);
+
+
+}
+
+-keep class java.util.ListIterator {
+
+ public abstract void add(java.lang.Object);
+ public abstract boolean hasNext();
+ public abstract boolean hasPrevious();
+ public abstract java.lang.Object next();
+ public abstract int nextIndex();
+ public abstract java.lang.Object previous();
+ public abstract int previousIndex();
+ public abstract void remove();
+ public abstract void set(java.lang.Object);
+
+
+}
+
+-keep class java.util.Locale {
+ <init>(java.lang.String);
+ <init>(java.lang.String, java.lang.String);
+ <init>(java.lang.String, java.lang.String, java.lang.String);
+
+ public java.lang.Object clone();
+ public boolean equals(java.lang.Object);
+ public static java.util.Locale forLanguageTag(java.lang.String);
+ public static java.util.Locale[] getAvailableLocales();
+ public java.lang.String getCountry();
+ public static java.util.Locale getDefault();
+ public java.lang.String getDisplayCountry();
+ public java.lang.String getDisplayCountry(java.util.Locale);
+ public java.lang.String getDisplayLanguage();
+ public java.lang.String getDisplayLanguage(java.util.Locale);
+ public java.lang.String getDisplayName();
+ public java.lang.String getDisplayName(java.util.Locale);
+ public java.lang.String getDisplayScript();
+ public java.lang.String getDisplayScript(java.util.Locale);
+ public java.lang.String getDisplayVariant();
+ public java.lang.String getDisplayVariant(java.util.Locale);
+ public java.lang.String getExtension(char);
+ public java.util.Set getExtensionKeys();
+ public java.lang.String getISO3Country();
+ public java.lang.String getISO3Language();
+ public static java.lang.String[] getISOCountries();
+ public static java.lang.String[] getISOLanguages();
+ public java.lang.String getLanguage();
+ public java.lang.String getScript();
+ public java.util.Set getUnicodeLocaleAttributes();
+ public java.util.Set getUnicodeLocaleKeys();
+ public java.lang.String getUnicodeLocaleType(java.lang.String);
+ public java.lang.String getVariant();
+ public synchronized int hashCode();
+ public static synchronized void setDefault(java.util.Locale);
+ public java.lang.String toLanguageTag();
+ public java.lang.String toString();
+
+
+ public static java.util.Locale CANADA;
+ public static java.util.Locale CANADA_FRENCH;
+ public static java.util.Locale CHINA;
+ public static java.util.Locale CHINESE;
+ public static java.util.Locale ENGLISH;
+ public static java.util.Locale FRANCE;
+ public static java.util.Locale FRENCH;
+ public static java.util.Locale GERMAN;
+ public static java.util.Locale GERMANY;
+ public static java.util.Locale ITALIAN;
+ public static java.util.Locale ITALY;
+ public static java.util.Locale JAPAN;
+ public static java.util.Locale JAPANESE;
+ public static java.util.Locale KOREA;
+ public static java.util.Locale KOREAN;
+ public static java.util.Locale PRC;
+ public static char PRIVATE_USE_EXTENSION;
+ public static java.util.Locale ROOT;
+ public static java.util.Locale SIMPLIFIED_CHINESE;
+ public static java.util.Locale TAIWAN;
+ public static java.util.Locale TRADITIONAL_CHINESE;
+ public static java.util.Locale UK;
+ public static char UNICODE_LOCALE_EXTENSION;
+ public static java.util.Locale US;
+}
+
+-keep class java.util.Map {
+
+ public abstract void clear();
+ public abstract boolean containsKey(java.lang.Object);
+ public abstract boolean containsValue(java.lang.Object);
+ public abstract java.util.Set entrySet();
+ public abstract boolean equals(java.lang.Object);
+ public abstract java.lang.Object get(java.lang.Object);
+ public abstract int hashCode();
+ public abstract boolean isEmpty();
+ public abstract java.util.Set keySet();
+ public abstract java.lang.Object put(java.lang.Object, java.lang.Object);
+ public abstract void putAll(java.util.Map);
+ public abstract java.lang.Object remove(java.lang.Object);
+ public abstract int size();
+ public abstract java.util.Collection values();
+
+
+}
+
+-keep class java.util.Map$Entry {
+
+ public abstract boolean equals(java.lang.Object);
+ public abstract java.lang.Object getKey();
+ public abstract java.lang.Object getValue();
+ public abstract int hashCode();
+ public abstract java.lang.Object setValue(java.lang.Object);
+
+
+}
+
+-keep class java.util.Set {
+
+ public abstract boolean add(java.lang.Object);
+ public abstract boolean addAll(java.util.Collection);
+ public abstract void clear();
+ public abstract boolean contains(java.lang.Object);
+ public abstract boolean containsAll(java.util.Collection);
+ public abstract boolean equals(java.lang.Object);
+ public abstract int hashCode();
+ public abstract boolean isEmpty();
+ public abstract java.util.Iterator iterator();
+ public abstract boolean remove(java.lang.Object);
+ public abstract boolean removeAll(java.util.Collection);
+ public abstract boolean retainAll(java.util.Collection);
+ public abstract int size();
+ public abstract java.lang.Object[] toArray();
+ public abstract java.lang.Object[] toArray(java.lang.Object[]);
+
+
+}
+
+-keep class java.util.SortedMap {
+
+ public abstract java.util.Comparator comparator();
+ public abstract java.lang.Object firstKey();
+ public abstract java.util.SortedMap headMap(java.lang.Object);
+ public abstract java.lang.Object lastKey();
+ public abstract java.util.SortedMap subMap(java.lang.Object, java.lang.Object);
+ public abstract java.util.SortedMap tailMap(java.lang.Object);
+
+
+}
+
+-keep class org.xmlpull.v1.XmlPullParser {
+
+ public abstract void defineEntityReplacementText(java.lang.String, java.lang.String);
+ public abstract int getAttributeCount();
+ public abstract java.lang.String getAttributeName(int);
+ public abstract java.lang.String getAttributeNamespace(int);
+ public abstract java.lang.String getAttributePrefix(int);
+ public abstract java.lang.String getAttributeType(int);
+ public abstract java.lang.String getAttributeValue(int);
+ public abstract java.lang.String getAttributeValue(java.lang.String, java.lang.String);
+ public abstract int getColumnNumber();
+ public abstract int getDepth();
+ public abstract int getEventType();
+ public abstract boolean getFeature(java.lang.String);
+ public abstract java.lang.String getInputEncoding();
+ public abstract int getLineNumber();
+ public abstract java.lang.String getName();
+ public abstract java.lang.String getNamespace(java.lang.String);
+ public abstract java.lang.String getNamespace();
+ public abstract int getNamespaceCount(int);
+ public abstract java.lang.String getNamespacePrefix(int);
+ public abstract java.lang.String getNamespaceUri(int);
+ public abstract java.lang.String getPositionDescription();
+ public abstract java.lang.String getPrefix();
+ public abstract java.lang.Object getProperty(java.lang.String);
+ public abstract java.lang.String getText();
+ public abstract char[] getTextCharacters(int[]);
+ public abstract boolean isAttributeDefault(int);
+ public abstract boolean isEmptyElementTag();
+ public abstract boolean isWhitespace();
+ public abstract int next();
+ public abstract int nextTag();
+ public abstract java.lang.String nextText();
+ public abstract int nextToken();
+ public abstract void require(int, java.lang.String, java.lang.String);
+ public abstract void setFeature(java.lang.String, boolean);
+ public abstract void setInput(java.io.Reader);
+ public abstract void setInput(java.io.InputStream, java.lang.String);
+ public abstract void setProperty(java.lang.String, java.lang.Object);
+
+
+ public static int CDSECT;
+ public static int COMMENT;
+ public static int DOCDECL;
+ public static int END_DOCUMENT;
+ public static int END_TAG;
+ public static int ENTITY_REF;
+ public static java.lang.String FEATURE_PROCESS_DOCDECL;
+ public static java.lang.String FEATURE_PROCESS_NAMESPACES;
+ public static java.lang.String FEATURE_REPORT_NAMESPACE_ATTRIBUTES;
+ public static java.lang.String FEATURE_VALIDATION;
+ public static int IGNORABLE_WHITESPACE;
+ public static java.lang.String NO_NAMESPACE;
+ public static int PROCESSING_INSTRUCTION;
+ public static int START_DOCUMENT;
+ public static int START_TAG;
+ public static int TEXT;
+ public static java.lang.String[] TYPES;
+}
+
+-keep class org.xmlpull.v1.XmlPullParserException {
+ <init>(java.lang.String);
+ <init>(java.lang.String, org.xmlpull.v1.XmlPullParser, java.lang.Throwable);
+
+ public int getColumnNumber();
+ public java.lang.Throwable getDetail();
+ public int getLineNumber();
+ public void printStackTrace();
+
+
+ protected int column;
+ protected java.lang.Throwable detail;
+ protected int row;
+}
+
+-keep class org.xmlpull.v1.XmlSerializer {
+
+ public abstract org.xmlpull.v1.XmlSerializer attribute(java.lang.String, java.lang.String, java.lang.String);
+ public abstract void cdsect(java.lang.String);
+ public abstract void comment(java.lang.String);
+ public abstract void docdecl(java.lang.String);
+ public abstract void endDocument();
+ public abstract org.xmlpull.v1.XmlSerializer endTag(java.lang.String, java.lang.String);
+ public abstract void entityRef(java.lang.String);
+ public abstract void flush();
+ public abstract int getDepth();
+ public abstract boolean getFeature(java.lang.String);
+ public abstract java.lang.String getName();
+ public abstract java.lang.String getNamespace();
+ public abstract java.lang.String getPrefix(java.lang.String, boolean);
+ public abstract java.lang.Object getProperty(java.lang.String);
+ public abstract void ignorableWhitespace(java.lang.String);
+ public abstract void processingInstruction(java.lang.String);
+ public abstract void setFeature(java.lang.String, boolean);
+ public abstract void setOutput(java.io.OutputStream, java.lang.String);
+ public abstract void setOutput(java.io.Writer);
+ public abstract void setPrefix(java.lang.String, java.lang.String);
+ public abstract void setProperty(java.lang.String, java.lang.Object);
+ public abstract void startDocument(java.lang.String, java.lang.Boolean);
+ public abstract org.xmlpull.v1.XmlSerializer startTag(java.lang.String, java.lang.String);
+ public abstract org.xmlpull.v1.XmlSerializer text(java.lang.String);
+ public abstract org.xmlpull.v1.XmlSerializer text(char[], int, int);
+
+
+}
+
diff --git a/car-support-lib/src/android/support/car/CarServiceLoaderEmbedded.java b/car-support-lib/src/android/support/car/CarServiceLoaderEmbedded.java
index e338a8b..3a21b1e 100644
--- a/car-support-lib/src/android/support/car/CarServiceLoaderEmbedded.java
+++ b/car-support-lib/src/android/support/car/CarServiceLoaderEmbedded.java
@@ -21,8 +21,6 @@
import android.content.ServiceConnection;
import android.os.Handler;
import android.os.IBinder;
-import android.os.Looper;
-import android.os.Message;
import android.support.car.content.pm.CarPackageManagerEmbedded;
import android.support.car.hardware.CarSensorManagerEmbedded;
import android.support.car.media.CarAudioManagerEmbedded;
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorEvent.java b/car-support-lib/src/android/support/car/hardware/CarSensorEvent.java
index 2b9aa65..3cc16c6 100644
--- a/car-support-lib/src/android/support/car/hardware/CarSensorEvent.java
+++ b/car-support-lib/src/android/support/car/hardware/CarSensorEvent.java
@@ -72,7 +72,7 @@
private static final long MILLI_IN_NANOS = 1000000L;
- /** Sensor type for this event, such as {@link CarSensorManager#SENSOR_TYPE_CAR_SPEED}. */
+ /** Sensor type for this event, such as {@link CarSensorManager#SENSOR_TYPE_COMPASS}. */
public final int sensorType;
/**
@@ -571,6 +571,7 @@
* with type {@link CarSensorManager#SENSOR_TYPE_FUEL_LEVEL}.
*
* @return A FuelLevel object corresponding to the data contained in the CarSensorEvent.
+ * @hide
*/
public FuelLevelData getFuelLevelData() {
checkType(CarSensorManager.SENSOR_TYPE_FUEL_LEVEL);
@@ -634,6 +635,7 @@
* type {@link CarSensorManager#SENSOR_TYPE_RPM}.
*
* @return An RpmData object corresponding to the data contained in the CarSensorEvent.
+ * @hide
*/
public RpmData getRpmData() {
checkType(CarSensorManager.SENSOR_TYPE_RPM);
@@ -740,6 +742,7 @@
*
* @return An AccelerometerData object corresponding to the data contained in the
* CarSensorEvent.
+ * @hide
*/
public AccelerometerData getAccelerometerData() {
checkType(CarSensorManager.SENSOR_TYPE_ACCELEROMETER);
@@ -775,6 +778,7 @@
* with type {@link CarSensorManager#SENSOR_TYPE_GYROSCOPE}.
*
* @return A GyroscopeData object corresponding to the data contained in the CarSensorEvent.
+ * @hide
*/
public GyroscopeData getGyroscopeData() {
checkType(CarSensorManager.SENSOR_TYPE_GYROSCOPE);
diff --git a/car-support-lib/src/android/support/car/hardware/CarSensorManager.java b/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
index 09586bd..a7e4323 100644
--- a/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
+++ b/car-support-lib/src/android/support/car/hardware/CarSensorManager.java
@@ -216,11 +216,6 @@
* The {@link OnSensorChangedListener} is the identifier for the request and the same
* instance must be passed into {@link #removeListener(OnSensorChangedListener)}.
* <p>
- * Requires {@link android.Manifest.permission#ACCESS_FINE_LOCATION} for
- * {@link #SENSOR_TYPE_LOCATION}, {@link Car#PERMISSION_SPEED} for
- * {@link #SENSOR_TYPE_CAR_SPEED}, {@link Car#PERMISSION_MILEAGE} for
- * {@link #SENSOR_TYPE_ODOMETER}, or {@link Car#PERMISSION_FUEL} for
- * {@link #SENSOR_TYPE_FUEL_LEVEL}.
*
* @param sensorType Sensor type to subscribe.
* @param rate How fast sensor events are delivered. Should be one of
diff --git a/car-usb-handler/Android.mk b/car-usb-handler/Android.mk
new file mode 100644
index 0000000..c050854
--- /dev/null
+++ b/car-usb-handler/Android.mk
@@ -0,0 +1,35 @@
+# Copyright (C) 2016 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+#
+
+LOCAL_PATH:= $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CarUsbHandler
+
+# Each update should be signed by OEMs
+LOCAL_CERTIFICATE := platform
+LOCAL_PRIVILEGED_MODULE := true
+
+LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+LOCAL_PROGUARD_ENABLED := disabled
+
+LOCAL_JAVA_LIBRARIES += android.car
+
+include $(BUILD_PACKAGE)
diff --git a/car-usb-handler/AndroidManifest.xml b/car-usb-handler/AndroidManifest.xml
new file mode 100644
index 0000000..be64f82
--- /dev/null
+++ b/car-usb-handler/AndroidManifest.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
+ package="android.car.usb.handler" >
+ <uses-sdk android:minSdkVersion="25" />
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+ <uses-permission android:name="android.permission.MANAGE_USB" />
+ <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"
+ android:directBootAware="true" >
+ <activity android:name=".UsbHostManagementActivity"
+ android:theme="@android:style/Theme.Material.Light.Dialog"
+ android:launchMode="singleTop" />
+ <receiver android:name=".BootUsbScanner" >
+ <intent-filter>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
+ </intent-filter>
+ </receiver>
+ </application>
+</manifest>
diff --git a/car-usb-handler/proguard.flags b/car-usb-handler/proguard.flags
new file mode 100644
index 0000000..565df26
--- /dev/null
+++ b/car-usb-handler/proguard.flags
@@ -0,0 +1,2 @@
+-verbose
+-keep @com.android.internal.annotations.VisibleForTesting class *
diff --git a/car-usb-handler/res/drawable-hdpi/ic_launcher.png b/car-usb-handler/res/drawable-hdpi/ic_launcher.png
new file mode 100644
index 0000000..96a442e
--- /dev/null
+++ b/car-usb-handler/res/drawable-hdpi/ic_launcher.png
Binary files differ
diff --git a/car-usb-handler/res/drawable-ldpi/ic_launcher.png b/car-usb-handler/res/drawable-ldpi/ic_launcher.png
new file mode 100644
index 0000000..9923872
--- /dev/null
+++ b/car-usb-handler/res/drawable-ldpi/ic_launcher.png
Binary files differ
diff --git a/car-usb-handler/res/drawable-mdpi/ic_launcher.png b/car-usb-handler/res/drawable-mdpi/ic_launcher.png
new file mode 100644
index 0000000..359047d
--- /dev/null
+++ b/car-usb-handler/res/drawable-mdpi/ic_launcher.png
Binary files differ
diff --git a/car-usb-handler/res/drawable-xhdpi/ic_launcher.png b/car-usb-handler/res/drawable-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..71c6d76
--- /dev/null
+++ b/car-usb-handler/res/drawable-xhdpi/ic_launcher.png
Binary files differ
diff --git a/car-usb-handler/res/layout/usb_handler_row.xml b/car-usb-handler/res/layout/usb_handler_row.xml
new file mode 100644
index 0000000..cc34e5e
--- /dev/null
+++ b/car-usb-handler/res/layout/usb_handler_row.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal" >
+ <ImageView
+ android:id="@+id/usb_handler_icon"
+ android:layout_width="60dp"
+ android:layout_height="60dp"
+ android:padding="5dp" />
+ <TextView
+ android:id="@+id/usb_handler_title"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" />
+</LinearLayout>
diff --git a/car-usb-handler/res/layout/usb_host.xml b/car-usb-handler/res/layout/usb_host.xml
new file mode 100644
index 0000000..fbcc608
--- /dev/null
+++ b/car-usb-handler/res/layout/usb_host.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical" >
+ <LinearLayout
+ android:id="@+id/usb_handlers_progress"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="horizontal"
+ android:visibility="gone"
+ android:gravity="center">
+ <ProgressBar
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"/>
+ <TextView
+ android:text="@+string/usb_resolving_handlers"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:orientation="vertical" />
+ </LinearLayout>
+ <ListView
+ android:id="@+id/usb_handlers_list"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content" />
+</LinearLayout>
diff --git a/car-usb-handler/res/values/strings.xml b/car-usb-handler/res/values/strings.xml
new file mode 100644
index 0000000..2242648
--- /dev/null
+++ b/car-usb-handler/res/values/strings.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<resources>
+ <string name="app_name">USB Handler</string>
+
+ <!-- USB Manager Settings -->
+ <string name="usb_title">USB Devices settings</string>
+ <string name="usb_description">Customize your USB Devices settings</string>
+ <string name="usb_available_devices">Connected devices</string>
+ <string name="usb_saved_devices">Saved devices</string>
+ <string name="usb_pref_delete_title">Remove handling app for USB device</string>
+ <string name="usb_pref_delete_message">Are you sure you wan to delete dafault handling app for %1$s?</string>
+ <string name="usb_pref_delete_yes">Yes</string>
+ <string name="usb_pref_delete_cancel">Cancel</string>
+ <string name="usb_resolving_handlers">Getting supported handlers</string>
+</resources>
diff --git a/car-usb-handler/res/xml/usb_manager_prefs.xml b/car-usb-handler/res/xml/usb_manager_prefs.xml
new file mode 100644
index 0000000..b090124
--- /dev/null
+++ b/car-usb-handler/res/xml/usb_manager_prefs.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ ~ Copyright (C) 2016 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+</PreferenceScreen>
diff --git a/car-usb-handler/src/android/car/usb/handler/AoapInterface.java b/car-usb-handler/src/android/car/usb/handler/AoapInterface.java
new file mode 100644
index 0000000..e4d843f
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/AoapInterface.java
@@ -0,0 +1,146 @@
+/**
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * <p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
+ * except in compliance with the License. You may obtain a copy of the License at
+ *
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * <p>Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.hardware.usb.UsbConstants;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbDeviceConnection;
+import android.util.Log;
+import java.io.IOException;
+
+final class AoapInterface {
+ /**
+ * Use Google Vendor ID when in accessory mode
+ */
+ public static final int USB_ACCESSORY_VENDOR_ID = 0x18D1;
+
+ /**
+ * Product ID to use when in accessory mode
+ */
+ public static final int USB_ACCESSORY_PRODUCT_ID = 0x2D00;
+
+ /**
+ * Product ID to use when in accessory mode and adb is enabled
+ */
+ public static final int USB_ACCESSORY_ADB_PRODUCT_ID = 0x2D01;
+
+ /**
+ * Indexes for strings sent by the host via ACCESSORY_SEND_STRING
+ */
+ public static final int ACCESSORY_STRING_MANUFACTURER = 0;
+ public static final int ACCESSORY_STRING_MODEL = 1;
+ public static final int ACCESSORY_STRING_DESCRIPTION = 2;
+ public static final int ACCESSORY_STRING_VERSION = 3;
+ public static final int ACCESSORY_STRING_URI = 4;
+ public static final int ACCESSORY_STRING_SERIAL = 5;
+
+ /**
+ * Control request for retrieving device's protocol version
+ *
+ * requestType: USB_DIR_IN | USB_TYPE_VENDOR
+ * request: ACCESSORY_GET_PROTOCOL
+ * value: 0
+ * index: 0
+ * data version number (16 bits little endian)
+ * 1 for original accessory support
+ * 2 adds HID and device to host audio support
+ */
+ public static final int ACCESSORY_GET_PROTOCOL = 51;
+
+ /**
+ * Control request for host to send a string to the device
+ *
+ * requestType: USB_DIR_OUT | USB_TYPE_VENDOR
+ * request: ACCESSORY_SEND_STRING
+ * value: 0
+ * index: string ID
+ * data zero terminated UTF8 string
+ *
+ * The device can later retrieve these strings via the
+ * ACCESSORY_GET_STRING_* ioctls
+ */
+ public static final int ACCESSORY_SEND_STRING = 52;
+
+ /**
+ * Control request for starting device in accessory mode.
+ * The host sends this after setting all its strings to the device.
+ *
+ * requestType: USB_DIR_OUT | USB_TYPE_VENDOR
+ * request: ACCESSORY_START
+ * value: 0
+ * index: 0
+ * data none
+ */
+ public static final int ACCESSORY_START = 53;
+
+ /**
+ * Max payload size for AOAP. Limited by driver.
+ */
+ public static final int MAX_PAYLOAD_SIZE = 16384;
+
+ /**
+ * Accessory write timeout.
+ */
+ public static final int AOAP_TIMEOUT_MS = 2000;
+
+ private static final String TAG = AoapInterface.class.getSimpleName();
+
+ public static int getProtocol(UsbDeviceConnection conn) {
+ byte[] buffer = new byte[2];
+ int len = conn.controlTransfer(
+ UsbConstants.USB_DIR_IN | UsbConstants.USB_TYPE_VENDOR,
+ ACCESSORY_GET_PROTOCOL, 0, 0, buffer, 2, AOAP_TIMEOUT_MS);
+ if (len != 2) {
+ return -1;
+ }
+ return (buffer[1] << 8) | buffer[0];
+ }
+
+ public static boolean isSupported(UsbDeviceConnection conn) {
+ return getProtocol(conn) >= 1;
+ }
+
+ public static void sendString(UsbDeviceConnection conn, int index, String string)
+ throws IOException {
+ byte[] buffer = (string + "\0").getBytes();
+ int len = conn.controlTransfer(
+ UsbConstants.USB_DIR_OUT | UsbConstants.USB_TYPE_VENDOR,
+ ACCESSORY_SEND_STRING, 0, index,
+ buffer, buffer.length, AOAP_TIMEOUT_MS);
+ if (len != buffer.length) {
+ throw new IOException("Failed to send string " + index + ": \"" + string + "\"");
+ } else {
+ Log.i(TAG, "Sent string " + index + ": \"" + string + "\"");
+ }
+ }
+
+ public static void sendAoapStart(UsbDeviceConnection conn) throws IOException {
+ int len = conn.controlTransfer(
+ UsbConstants.USB_DIR_OUT | UsbConstants.USB_TYPE_VENDOR,
+ ACCESSORY_START, 0, 0, null, 0, AOAP_TIMEOUT_MS);
+ if (len < 0) {
+ throw new IOException("Control transfer for accessory start failed: " + len);
+ }
+ }
+
+ public static boolean isDeviceInAoapMode(UsbDevice device) {
+ if (device == null) {
+ return false;
+ }
+ final int vid = device.getVendorId();
+ final int pid = device.getProductId();
+ return vid == USB_ACCESSORY_VENDOR_ID
+ && (pid == USB_ACCESSORY_PRODUCT_ID || pid == USB_ACCESSORY_ADB_PRODUCT_ID);
+ }
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/BootUsbScanner.java b/car-usb-handler/src/android/car/usb/handler/BootUsbScanner.java
new file mode 100644
index 0000000..5255f16
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/BootUsbScanner.java
@@ -0,0 +1,40 @@
+package android.car.usb.handler;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbDeviceConnection;
+import android.hardware.usb.UsbManager;
+
+public class BootUsbScanner extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // TODO: move probing of devices to a service, since AoapInterface.isSupported() could take
+ // up to 2 seconds and many USB devices could be connected.
+ UsbManager manager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
+ for (UsbDevice device : manager.getDeviceList().values()) {
+ if (AoapInterface.isDeviceInAoapMode(device)) {
+ // This could happen if we reboot. We should try to handle this accessory.
+ handle(context, device);
+ } else {
+ UsbDeviceConnection connection = UsbUtil.openConnection(manager, device);
+ try {
+ if (AoapInterface.isSupported(connection)) {
+ handle(context, device);
+ }
+ } finally {
+ connection.close();
+ }
+ }
+ }
+ }
+
+ private void handle(Context context, UsbDevice device) {
+ Intent manageDevice = new Intent(context, UsbHostManagementActivity.class);
+ manageDevice.setAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
+ manageDevice.putExtra(UsbManager.EXTRA_DEVICE, device);
+ manageDevice.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ context.startActivity(manageDevice);
+ }
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java b/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
new file mode 100644
index 0000000..c0eebbe
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
@@ -0,0 +1,670 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.car.IUsbAoapSupportCheckService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.ResolveInfo;
+import android.content.res.XmlResourceParser;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbDeviceConnection;
+import android.hardware.usb.UsbInterface;
+import android.hardware.usb.UsbManager;
+import android.os.Handler;
+import android.os.HandlerThread;
+import android.os.IBinder;
+import android.os.Looper;
+import android.os.Message;
+import android.os.RemoteException;
+import android.util.Log;
+import android.util.Pair;
+import com.android.internal.util.XmlUtils;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Queue;
+import org.xmlpull.v1.XmlPullParser;
+
+/** Resolves supported handlers for USB device. */
+public final class UsbDeviceHandlerResolver {
+ private static final String TAG = UsbDeviceHandlerResolver.class.getSimpleName();
+ private static final boolean LOCAL_LOGD = true;
+
+ /**
+ * Callbacks for device resolver.
+ */
+ public interface UsbDeviceHandlerResolverCallback {
+ /** Handlers are resolved */
+ void onHandlersResolveCompleted(
+ UsbDevice device, List<UsbDeviceSettings> availableSettings);
+ /** Device was dispatched */
+ void onDeviceDispatched();
+ }
+
+ private final UsbManager mUsbManager;
+ private final PackageManager mPackageManager;
+ private final UsbDeviceHandlerResolverCallback mDeviceCallback;
+ private final Context mContext;
+ private final HandlerThread mHandlerThread;
+ private final UsbDeviceResolverHandler mHandler;
+
+ private class DeviceContext {
+ public final UsbDevice usbDevice;
+ public final UsbDeviceConnection connection;
+ public final UsbDeviceSettings settings;
+ public final List<UsbDeviceSettings> activeDeviceSettings;
+ public final Queue<Pair<ResolveInfo, DeviceFilter>> mActiveDeviceOptions =
+ new LinkedList<>();
+
+ private volatile IUsbAoapSupportCheckService mUsbAoapSupportCheckService;
+ private final ServiceConnection mServiceConnection = new ServiceConnection() {
+ @Override
+ public void onServiceConnected(ComponentName className, IBinder service) {
+ Log.i(TAG, "onServiceConnected: " + className);
+ mUsbAoapSupportCheckService = IUsbAoapSupportCheckService.Stub.asInterface(service);
+ mHandler.requestOnServiceConnectionStateChanged(DeviceContext.this);
+ }
+
+ @Override
+ public void onServiceDisconnected(ComponentName className) {
+ Log.i(TAG, "onServiceDisconnected: " + className);
+ mUsbAoapSupportCheckService = null;
+ mHandler.requestOnServiceConnectionStateChanged(DeviceContext.this);
+ }
+ };
+
+ public DeviceContext(UsbDevice usbDevice, UsbDeviceSettings settings,
+ List<UsbDeviceSettings> activeDeviceSettings) {
+ this.usbDevice = usbDevice;
+ this.settings = settings;
+ this.activeDeviceSettings = activeDeviceSettings;
+ connection = UsbUtil.openConnection(mUsbManager, usbDevice);
+ }
+ }
+
+ // This class is used to describe a USB device.
+ // When used in HashMaps all values must be specified,
+ // but wildcards can be used for any of the fields in
+ // the package meta-data.
+ private static class DeviceFilter {
+ // USB Vendor ID (or -1 for unspecified)
+ public final int mVendorId;
+ // USB Product ID (or -1 for unspecified)
+ public final int mProductId;
+ // USB device or interface class (or -1 for unspecified)
+ public final int mClass;
+ // USB device subclass (or -1 for unspecified)
+ public final int mSubclass;
+ // USB device protocol (or -1 for unspecified)
+ public final int mProtocol;
+ // USB device manufacturer name string (or null for unspecified)
+ public final String mManufacturerName;
+ // USB device product name string (or null for unspecified)
+ public final String mProductName;
+ // USB device serial number string (or null for unspecified)
+ public final String mSerialNumber;
+
+ // USB device in AOAP mode manufacturer
+ public final String mAoapManufacturer;
+ // USB device in AOAP mode model
+ public final String mAoapModel;
+ // USB device in AOAP mode description string
+ public final String mAoapDescription;
+ // USB device in AOAP mode version
+ public final String mAoapVersion;
+ // USB device in AOAP mode URI
+ public final String mAoapUri;
+ // USB device in AOAP mode serial
+ public final String mAoapSerial;
+ // USB device in AOAP mode verification service
+ public final String mAoapService;
+
+ DeviceFilter(int vid, int pid, int clasz, int subclass, int protocol,
+ String manufacturer, String product, String serialnum,
+ String aoapManufacturer, String aoapModel, String aoapDescription,
+ String aoapVersion, String aoapUri, String aoapSerial,
+ String aoapService) {
+ mVendorId = vid;
+ mProductId = pid;
+ mClass = clasz;
+ mSubclass = subclass;
+ mProtocol = protocol;
+ mManufacturerName = manufacturer;
+ mProductName = product;
+ mSerialNumber = serialnum;
+
+ mAoapManufacturer = aoapManufacturer;
+ mAoapModel = aoapModel;
+ mAoapDescription = aoapDescription;
+ mAoapVersion = aoapVersion;
+ mAoapUri = aoapUri;
+ mAoapSerial = aoapSerial;
+ mAoapService = aoapService;
+ }
+
+ DeviceFilter(UsbDevice device) {
+ mVendorId = device.getVendorId();
+ mProductId = device.getProductId();
+ mClass = device.getDeviceClass();
+ mSubclass = device.getDeviceSubclass();
+ mProtocol = device.getDeviceProtocol();
+ mManufacturerName = device.getManufacturerName();
+ mProductName = device.getProductName();
+ mSerialNumber = device.getSerialNumber();
+ mAoapManufacturer = null;
+ mAoapModel = null;
+ mAoapDescription = null;
+ mAoapVersion = null;
+ mAoapUri = null;
+ mAoapSerial = null;
+ mAoapService = null;
+ }
+
+ public static DeviceFilter read(XmlPullParser parser, boolean aoapData) {
+ int vendorId = -1;
+ int productId = -1;
+ int deviceClass = -1;
+ int deviceSubclass = -1;
+ int deviceProtocol = -1;
+ String manufacturerName = null;
+ String productName = null;
+ String serialNumber = null;
+
+ String aoapManufacturer = null;
+ String aoapModel = null;
+ String aoapDescription = null;
+ String aoapVersion = null;
+ String aoapUri = null;
+ String aoapSerial = null;
+ String aoapService = null;
+
+ int count = parser.getAttributeCount();
+ for (int i = 0; i < count; i++) {
+ String name = parser.getAttributeName(i);
+ String value = parser.getAttributeValue(i);
+ // Attribute values are ints or strings
+ if (!aoapData && "manufacturer-name".equals(name)) {
+ manufacturerName = value;
+ } else if (!aoapData && "product-name".equals(name)) {
+ productName = value;
+ } else if (!aoapData && "serial-number".equals(name)) {
+ serialNumber = value;
+ } else if (aoapData && "manufacturer".equals(name)) {
+ aoapManufacturer = value;
+ } else if (aoapData && "model".equals(name)) {
+ aoapModel = value;
+ } else if (aoapData && "description".equals(name)) {
+ aoapDescription = value;
+ } else if (aoapData && "version".equals(name)) {
+ aoapVersion = value;
+ } else if (aoapData && "uri".equals(name)) {
+ aoapUri = value;
+ } else if (aoapData && "serial".equals(name)) {
+ aoapSerial = value;
+ } else if (aoapData && "service".equals(name)) {
+ aoapService = value;
+ } else if (!aoapData) {
+ int intValue = -1;
+ int radix = 10;
+ if (value != null && value.length() > 2 && value.charAt(0) == '0'
+ && (value.charAt(1) == 'x' || value.charAt(1) == 'X')) {
+ // allow hex values starting with 0x or 0X
+ radix = 16;
+ value = value.substring(2);
+ }
+ try {
+ intValue = Integer.parseInt(value, radix);
+ } catch (NumberFormatException e) {
+ Log.e(TAG, "invalid number for field " + name, e);
+ continue;
+ }
+ if ("vendor-id".equals(name)) {
+ vendorId = intValue;
+ } else if ("product-id".equals(name)) {
+ productId = intValue;
+ } else if ("class".equals(name)) {
+ deviceClass = intValue;
+ } else if ("subclass".equals(name)) {
+ deviceSubclass = intValue;
+ } else if ("protocol".equals(name)) {
+ deviceProtocol = intValue;
+ }
+ }
+ }
+ return new DeviceFilter(vendorId, productId,
+ deviceClass, deviceSubclass, deviceProtocol,
+ manufacturerName, productName, serialNumber, aoapManufacturer,
+ aoapModel, aoapDescription, aoapVersion, aoapUri, aoapSerial,
+ aoapService);
+ }
+
+ private boolean matches(int clasz, int subclass, int protocol) {
+ return ((mClass == -1 || clasz == mClass)
+ && (mSubclass == -1 || subclass == mSubclass)
+ && (mProtocol == -1 || protocol == mProtocol));
+ }
+
+ public boolean matches(UsbDevice device) {
+ if (mVendorId != -1 && device.getVendorId() != mVendorId) {
+ return false;
+ }
+ if (mProductId != -1 && device.getProductId() != mProductId) {
+ return false;
+ }
+ if (mManufacturerName != null && device.getManufacturerName() == null) {
+ return false;
+ }
+ if (mProductName != null && device.getProductName() == null) {
+ return false;
+ }
+ if (mSerialNumber != null && device.getSerialNumber() == null) {
+ return false;
+ }
+ if (mManufacturerName != null && device.getManufacturerName() != null
+ && !mManufacturerName.equals(device.getManufacturerName())) {
+ return false;
+ }
+ if (mProductName != null && device.getProductName() != null
+ && !mProductName.equals(device.getProductName())) {
+ return false;
+ }
+ if (mSerialNumber != null && device.getSerialNumber() != null
+ && !mSerialNumber.equals(device.getSerialNumber())) {
+ return false;
+ }
+
+ // check device class/subclass/protocol
+ if (matches(device.getDeviceClass(), device.getDeviceSubclass(),
+ device.getDeviceProtocol())) {
+ return true;
+ }
+
+ // if device doesn't match, check the interfaces
+ int count = device.getInterfaceCount();
+ for (int i = 0; i < count; i++) {
+ UsbInterface intf = device.getInterface(i);
+ if (matches(intf.getInterfaceClass(), intf.getInterfaceSubclass(),
+ intf.getInterfaceProtocol())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ // can't compare if we have wildcard strings
+ if (mVendorId == -1 || mProductId == -1
+ || mClass == -1 || mSubclass == -1 || mProtocol == -1) {
+ return false;
+ }
+ if (obj instanceof DeviceFilter) {
+ DeviceFilter filter = (DeviceFilter) obj;
+
+ if (filter.mVendorId != mVendorId
+ || filter.mProductId != mProductId
+ || filter.mClass != mClass
+ || filter.mSubclass != mSubclass
+ || filter.mProtocol != mProtocol) {
+ return false;
+ }
+ if ((filter.mManufacturerName != null && mManufacturerName == null)
+ || (filter.mManufacturerName == null && mManufacturerName != null)
+ || (filter.mProductName != null && mProductName == null)
+ || (filter.mProductName == null && mProductName != null)
+ || (filter.mSerialNumber != null && mSerialNumber == null)
+ || (filter.mSerialNumber == null && mSerialNumber != null)) {
+ return false;
+ }
+ if ((filter.mManufacturerName != null && mManufacturerName != null
+ && !mManufacturerName.equals(filter.mManufacturerName))
+ || (filter.mProductName != null && mProductName != null
+ && !mProductName.equals(filter.mProductName))
+ || (filter.mSerialNumber != null && mSerialNumber != null
+ && !mSerialNumber.equals(filter.mSerialNumber))) {
+ return false;
+ }
+ return true;
+ }
+ if (obj instanceof UsbDevice) {
+ UsbDevice device = (UsbDevice) obj;
+ if (device.getVendorId() != mVendorId
+ || device.getProductId() != mProductId
+ || device.getDeviceClass() != mClass
+ || device.getDeviceSubclass() != mSubclass
+ || device.getDeviceProtocol() != mProtocol) {
+ return false;
+ }
+ if ((mManufacturerName != null && device.getManufacturerName() == null)
+ || (mManufacturerName == null && device.getManufacturerName() != null)
+ || (mProductName != null && device.getProductName() == null)
+ || (mProductName == null && device.getProductName() != null)
+ || (mSerialNumber != null && device.getSerialNumber() == null)
+ || (mSerialNumber == null && device.getSerialNumber() != null)) {
+ return false;
+ }
+ if ((device.getManufacturerName() != null
+ && !mManufacturerName.equals(device.getManufacturerName()))
+ || (device.getProductName() != null
+ && !mProductName.equals(device.getProductName()))
+ || (device.getSerialNumber() != null
+ && !mSerialNumber.equals(device.getSerialNumber()))) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ }
+
+ @Override
+ public int hashCode() {
+ return (((mVendorId << 16) | mProductId)
+ ^ ((mClass << 16) | (mSubclass << 8) | mProtocol));
+ }
+
+ @Override
+ public String toString() {
+ return "DeviceFilter[mVendorId=" + mVendorId + ",mProductId=" + mProductId
+ + ",mClass=" + mClass + ",mSubclass=" + mSubclass
+ + ",mProtocol=" + mProtocol + ",mManufacturerName=" + mManufacturerName
+ + ",mProductName=" + mProductName + ",mSerialNumber=" + mSerialNumber + "]";
+ }
+ }
+
+ public UsbDeviceHandlerResolver(UsbManager manager, Context context,
+ UsbDeviceHandlerResolverCallback deviceListener) {
+ mUsbManager = manager;
+ mContext = context;
+ mDeviceCallback = deviceListener;
+ mHandlerThread = new HandlerThread(TAG);
+ mHandlerThread.start();
+ mHandler = new UsbDeviceResolverHandler(mHandlerThread.getLooper());
+ mPackageManager = context.getPackageManager();
+ }
+
+ /**
+ * Releases current object.
+ */
+ public void release() {
+ if (mHandlerThread != null) {
+ mHandlerThread.quitSafely();
+ }
+ }
+
+ /**
+ * Resolves handlers for USB device.
+ */
+ public void resolve(UsbDevice device) {
+ mHandler.requestResolveHandlers(device);
+ }
+
+ /**
+ * Dispatches device to component.
+ */
+ public boolean dispatch(UsbDevice device, ComponentName component, boolean inAoap) {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "dispatch: " + device + " component: " + component + " inAoap: " + inAoap);
+ }
+
+ ActivityInfo activityInfo;
+ try {
+ activityInfo = mPackageManager.getActivityInfo(component, PackageManager.GET_META_DATA);
+ } catch (NameNotFoundException e) {
+ Log.e(TAG, "Activity not found: " + component);
+ return false;
+ }
+
+ Intent intent = createDeviceAttachedIntent(device);
+ if (inAoap) {
+ if (AoapInterface.isDeviceInAoapMode(device)) {
+ mDeviceCallback.onDeviceDispatched();
+ } else {
+ DeviceFilter filter =
+ packageMatches(activityInfo, intent.getAction(), device, true);
+ if (filter != null) {
+ requestAoapSwitch(device, filter);
+ return true;
+ }
+ }
+ }
+
+ intent.setComponent(component);
+ mUsbManager.grantPermission(device, activityInfo.applicationInfo.uid);
+
+ mContext.startActivity(intent);
+ mHandler.requestCompleteDeviceDispatch();
+ return true;
+ }
+
+ private static Intent createDeviceAttachedIntent(UsbDevice device) {
+ Intent intent = new Intent(UsbManager.ACTION_USB_DEVICE_ATTACHED);
+ intent.putExtra(UsbManager.EXTRA_DEVICE, device);
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ return intent;
+ }
+
+ private void doHandleResolveHandlers(UsbDevice device) {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "doHandleResolveHandlers: " + device);
+ }
+
+ Intent intent = createDeviceAttachedIntent(device);
+ List<Pair<ResolveInfo, DeviceFilter>> matches = getDeviceMatches(device, intent, false);
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "matches size: " + matches.size());
+ }
+ List<UsbDeviceSettings> settings = new ArrayList<>(matches.size());
+ for (Pair<ResolveInfo, DeviceFilter> info : matches) {
+ UsbDeviceSettings setting = UsbDeviceSettings.constructSettings(device);
+ setting.setHandler(
+ new ComponentName(
+ info.first.activityInfo.packageName, info.first.activityInfo.name));
+ settings.add(setting);
+ }
+ DeviceContext deviceContext =
+ new DeviceContext(device, UsbDeviceSettings.constructSettings(device), settings);
+ if (AoapInterface.isSupported(deviceContext.connection)) {
+ deviceContext.mActiveDeviceOptions.addAll(getDeviceMatches(device, intent, true));
+ queryNextAoapHandler(deviceContext);
+ } else {
+ deviceProbingComplete(deviceContext);
+ }
+ }
+
+ private void queryNextAoapHandler(DeviceContext context) {
+ Pair<ResolveInfo, DeviceFilter> option = context.mActiveDeviceOptions.peek();
+ if (option == null) {
+ Log.w(TAG, "No more options left.");
+ deviceProbingComplete(context);
+ return;
+ }
+ Intent serviceIntent = new Intent();
+ serviceIntent.setComponent(ComponentName.unflattenFromString(option.second.mAoapService));
+ boolean bound = mContext.bindService(serviceIntent, context.mServiceConnection,
+ Context.BIND_AUTO_CREATE);
+ if (bound) {
+ mHandler.requestServiceConnectionTimeout();
+ } else {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "Failed to bind to the service");
+ }
+ context.mActiveDeviceOptions.poll();
+ queryNextAoapHandler(context);
+ }
+ }
+
+ private void requestAoapSwitch(UsbDevice device, DeviceFilter filter) {
+ UsbDeviceConnection connection = UsbUtil.openConnection(mUsbManager, device);
+ try {
+ UsbUtil.sendAoapAccessoryStart(
+ connection,
+ filter.mAoapManufacturer,
+ filter.mAoapModel,
+ filter.mAoapDescription,
+ filter.mAoapVersion,
+ filter.mAoapUri,
+ filter.mAoapSerial);
+ } catch (IOException e) {
+ Log.w(TAG, "Failed to switch device into AOAP mode", e);
+ }
+ connection.close();
+ }
+
+ private void deviceProbingComplete(DeviceContext context) {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "deviceProbingComplete");
+ }
+ mDeviceCallback.onHandlersResolveCompleted(context.usbDevice, context.activeDeviceSettings);
+ }
+
+ private void doHandleServiceConnectionStateChanged(DeviceContext context) {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "doHandleServiceConnectionStateChanged: "
+ + context.mUsbAoapSupportCheckService);
+ }
+ if (context.mUsbAoapSupportCheckService != null) {
+ boolean deviceSupported = false;
+ try {
+ deviceSupported =
+ context.mUsbAoapSupportCheckService.isDeviceSupported(context.usbDevice);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Call to remote service failed", e);
+ }
+ if (deviceSupported) {
+ Pair<ResolveInfo, DeviceFilter> option = context.mActiveDeviceOptions.peek();
+
+ UsbDeviceSettings setting = UsbDeviceSettings.constructSettings(context.settings);
+ setting.setHandler(
+ new ComponentName(
+ option.first.activityInfo.packageName, option.first.activityInfo.name));
+ setting.setAoap(true);
+ context.activeDeviceSettings.add(setting);
+ }
+ mContext.unbindService(context.mServiceConnection);
+ }
+ context.mActiveDeviceOptions.poll();
+ queryNextAoapHandler(context);
+ }
+
+ private List<Pair<ResolveInfo, DeviceFilter>> getDeviceMatches(
+ UsbDevice device, Intent intent, boolean forAoap) {
+ List<Pair<ResolveInfo, DeviceFilter>> matches = new ArrayList<>();
+ List<ResolveInfo> resolveInfos =
+ mPackageManager.queryIntentActivities(intent, PackageManager.GET_META_DATA);
+ for (ResolveInfo resolveInfo : resolveInfos) {
+ DeviceFilter filter = packageMatches(resolveInfo.activityInfo,
+ intent.getAction(), device, forAoap);
+ if (filter != null) {
+ matches.add(Pair.create(resolveInfo, filter));
+ }
+ }
+ return matches;
+ }
+
+ private DeviceFilter packageMatches(ActivityInfo ai, String metaDataName, UsbDevice device,
+ boolean forAoap) {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "packageMatches ai: " + ai + "metaDataName: " + metaDataName + " forAoap: "
+ + forAoap);
+ }
+ String filterTagName = forAoap ? "usb-aoap-accessory" : "usb-device";
+ XmlResourceParser parser = null;
+ try {
+ parser = ai.loadXmlMetaData(mPackageManager, metaDataName);
+ if (parser == null) {
+ Log.w(TAG, "no meta-data for " + ai);
+ return null;
+ }
+
+ XmlUtils.nextElement(parser);
+ while (parser.getEventType() != XmlPullParser.END_DOCUMENT) {
+ String tagName = parser.getName();
+ if (device != null && filterTagName.equals(tagName)) {
+ DeviceFilter filter = DeviceFilter.read(parser, forAoap);
+ if (forAoap || filter.matches(device)) {
+ return filter;
+ }
+ }
+ XmlUtils.nextElement(parser);
+ }
+ } catch (Exception e) {
+ Log.w(TAG, "Unable to load component info " + ai.toString(), e);
+ } finally {
+ if (parser != null) parser.close();
+ }
+ return null;
+ }
+
+ private class UsbDeviceResolverHandler extends Handler {
+ private static final int MSG_RESOLVE_HANDLERS = 0;
+ private static final int MSG_SERVICE_CONNECTION_STATE_CHANGE = 1;
+ private static final int MSG_SERVICE_CONNECTION_TIMEOUT = 2;
+ private static final int MSG_COMPLETE_DISPATCH = 3;
+
+ private static final long CONNECT_TIMEOUT_MS = 5000;
+
+ private UsbDeviceResolverHandler(Looper looper) {
+ super(looper);
+ }
+
+ public void requestResolveHandlers(UsbDevice device) {
+ Message msg = obtainMessage(MSG_RESOLVE_HANDLERS, device);
+ sendMessage(msg);
+ }
+
+ public void requestOnServiceConnectionStateChanged(DeviceContext deviceContext) {
+ sendMessage(obtainMessage(MSG_SERVICE_CONNECTION_STATE_CHANGE, deviceContext));
+ }
+
+ public void requestServiceConnectionTimeout() {
+ sendEmptyMessageDelayed(MSG_SERVICE_CONNECTION_TIMEOUT, CONNECT_TIMEOUT_MS);
+ }
+
+ public void requestCompleteDeviceDispatch() {
+ sendEmptyMessage(MSG_COMPLETE_DISPATCH);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_RESOLVE_HANDLERS:
+ doHandleResolveHandlers((UsbDevice) msg.obj);
+ break;
+ case MSG_SERVICE_CONNECTION_STATE_CHANGE:
+ removeMessages(MSG_SERVICE_CONNECTION_TIMEOUT);
+ doHandleServiceConnectionStateChanged((DeviceContext) msg.obj);
+ break;
+ case MSG_SERVICE_CONNECTION_TIMEOUT:
+ Log.i(TAG, "Service connection timeout");
+ doHandleServiceConnectionStateChanged(null);
+ break;
+ case MSG_COMPLETE_DISPATCH:
+ mDeviceCallback.onDeviceDispatched();
+ break;
+ default:
+ Log.w(TAG, "Unsupported message: " + msg);
+ }
+ }
+ }
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbDevicePreference.java b/car-usb-handler/src/android/car/usb/handler/UsbDevicePreference.java
new file mode 100644
index 0000000..e4b6a84
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/UsbDevicePreference.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.preference.Preference;
+
+/**
+ * Setting preference used for USB devices.
+ */
+public final class UsbDevicePreference extends Preference
+ implements Preference.OnPreferenceClickListener {
+
+ /**
+ * Callbacks to handle preference changes.
+ */
+ public interface UsbDevicePreferenceCallback {
+ /** Preference deleted */
+ void onUsbDevicePreferenceDelete(Preference preference, UsbDeviceSettings settings);
+ }
+
+ private final UsbDeviceSettings mUsbDeviceSettings;
+ private final UsbDevicePreferenceCallback mCallback;
+
+ public UsbDevicePreference(Context context, UsbDeviceSettings usbDeviceSettings,
+ UsbDevicePreferenceCallback callback) {
+ super(context);
+ mCallback = callback;
+ mUsbDeviceSettings = usbDeviceSettings;
+ setTitle(usbDeviceSettings.getDeviceName());
+ if (usbDeviceSettings.getHandler() != null) {
+ setSummary(usbDeviceSettings.getHandler().flattenToShortString());
+ }
+ setOnPreferenceClickListener(this);
+ }
+
+ @Override
+ public boolean onPreferenceClick(final Preference preference) {
+ new AlertDialog.Builder(getContext())
+ .setTitle(R.string.usb_pref_delete_title)
+ .setMessage(String.format(
+ getContext().getResources().getString(R.string.usb_pref_delete_message),
+ mUsbDeviceSettings.getDeviceName()))
+ .setIcon(android.R.drawable.ic_dialog_alert)
+ .setPositiveButton(R.string.usb_pref_delete_yes,
+ new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int whichButton) {
+ mCallback.onUsbDevicePreferenceDelete(
+ preference, mUsbDeviceSettings);
+ }})
+ .setNegativeButton(R.string.usb_pref_delete_cancel, null)
+ .show();
+ return true;
+ }
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbDeviceSettings.java b/car-usb-handler/src/android/car/usb/handler/UsbDeviceSettings.java
new file mode 100644
index 0000000..5084414
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/UsbDeviceSettings.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.content.ComponentName;
+import android.hardware.usb.UsbDevice;
+import com.android.internal.util.Preconditions;
+
+/**
+ * Settings for USB device.
+ * @hide
+ */
+public final class UsbDeviceSettings {
+
+ private final String mSerialNumber;
+ private final int mVid;
+ private final int mPid;
+ private String mDeviceName;
+ private ComponentName mHandler;
+ private boolean mAoap;
+ private boolean mDefaultHandler;
+
+ UsbDeviceSettings(String serialNumber, int vid, int pid) {
+ Preconditions.checkNotNull(serialNumber);
+
+ mSerialNumber = serialNumber;
+ mVid = vid;
+ mPid = pid;
+ }
+
+ public String getSerialNumber() {
+ return mSerialNumber;
+ }
+
+ public int getVid() {
+ return mVid;
+ }
+
+ public int getPid() {
+ return mPid;
+ }
+
+ public void setDeviceName(String deviceName) {
+ mDeviceName = deviceName;
+ }
+
+ public String getDeviceName() {
+ return mDeviceName;
+ }
+
+ public void setHandler(ComponentName handler) {
+ mHandler = handler;
+ }
+
+ public ComponentName getHandler() {
+ return mHandler;
+ }
+
+ public void setAoap(boolean aoap) {
+ mAoap = aoap;
+ }
+
+ public boolean getAoap() {
+ return mAoap;
+ }
+
+ public void setDefaultHandler(boolean defaultHandler) {
+ mDefaultHandler = defaultHandler;
+ }
+
+ public boolean isDefaultHandler() {
+ return mDefaultHandler;
+ }
+
+ @Override
+ public String toString() {
+ return "UsbDeviceSettings{serial=" + mSerialNumber + ", vid=" + mVid + ", pid=" + mPid
+ + ", name=" + mDeviceName + ", handler=" + mHandler.toString() + ", aoap=" + mAoap
+ + ", default=" + mDefaultHandler + "}";
+ }
+
+ /**
+ * Checks if setting matches {@code UsbDevice}.
+ */
+ public boolean matchesDevice(UsbDevice device) {
+ return getSerialNumber().equals(device.getSerialNumber());
+ }
+
+ /**
+ * Creates settings from {@code UsbDevice}.
+ */
+ public static UsbDeviceSettings constructSettings(UsbDevice device) {
+ UsbDeviceSettings settings = new UsbDeviceSettings(
+ device.getSerialNumber(), device.getVendorId(), device.getProductId());
+ settings.setDeviceName(device.getProductName());
+ return settings;
+ }
+
+ /**
+ * Creates settings from other settings.
+ * <p>
+ * Only basic properties are inherited.
+ */
+ public static UsbDeviceSettings constructSettings(UsbDeviceSettings origSettings) {
+ UsbDeviceSettings settings = new UsbDeviceSettings(
+ origSettings.getSerialNumber(), origSettings.getVid(), origSettings.getPid());
+ settings.setDeviceName(origSettings.getDeviceName());
+ return settings;
+ }
+
+ /**
+ * Creates settings.
+ */
+ public static UsbDeviceSettings constructSettings(String serialNumber, int vid, int pid,
+ String deviceName, ComponentName handler, boolean aoap) {
+ UsbDeviceSettings settings = new UsbDeviceSettings(serialNumber, vid, pid);
+ settings.setDeviceName(deviceName);
+ settings.setHandler(handler);
+ settings.setAoap(aoap);
+ return settings;
+ }
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbHostController.java b/car-usb-handler/src/android/car/usb/handler/UsbHostController.java
new file mode 100644
index 0000000..b705928
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/UsbHostController.java
@@ -0,0 +1,241 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbManager;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.util.Log;
+import com.android.internal.annotations.GuardedBy;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Controller used to handle USB device connections.
+ * TODO: Support handling multiple new USB devices at the same time.
+ */
+public final class UsbHostController
+ implements UsbDeviceHandlerResolver.UsbDeviceHandlerResolverCallback {
+
+ /**
+ * Callbacks for controller
+ */
+ public interface UsbHostControllerCallbacks {
+ /** Host controller ready for shutdown */
+ void shutdown();
+ /** Change of processing state */
+ void processingStateChanged(boolean processing);
+ /** Title of processing changed */
+ void titleChanged(String title);
+ /** Options for USB device changed */
+ void optionsUpdated(List<UsbDeviceSettings> options);
+ }
+
+ private static final String TAG = UsbHostController.class.getSimpleName();
+ private static final boolean LOCAL_LOGD = true;
+ private static final boolean LOCAL_LOGV = true;
+
+
+ private final List<UsbDeviceSettings> mEmptyList = new ArrayList<>();
+ private final Context mContext;
+ private final UsbHostControllerCallbacks mCallback;
+ private final UsbSettingsStorage mUsbSettingsStorage;
+ private final UsbManager mUsbManager;
+ private final UsbDeviceHandlerResolver mUsbResolver;
+ private final UsbHostControllerHandler mHandler;
+
+ private final BroadcastReceiver mUsbBroadcastReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(intent.getAction())) {
+ UsbDevice device = intent.<UsbDevice>getParcelableExtra(UsbManager.EXTRA_DEVICE);
+ unsetActiveDeviceIfSerialMatch(device);
+ } else if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(intent.getAction())) {
+ UsbDevice device = intent.<UsbDevice>getParcelableExtra(UsbManager.EXTRA_DEVICE);
+ setActiveDeviceIfSerialMatch(device);
+ }
+ }
+ };
+
+ @GuardedBy("this")
+ private UsbDevice mActiveDevice;
+
+ @GuardedBy("this")
+ private String mProcessingDeviceSerial;
+
+ public UsbHostController(Context context, UsbHostControllerCallbacks callbacks) {
+ mContext = context;
+ mCallback = callbacks;
+ mHandler = new UsbHostControllerHandler(Looper.myLooper());
+ mUsbSettingsStorage = new UsbSettingsStorage(context);
+ mUsbManager = (UsbManager) context.getSystemService(Context.USB_SERVICE);
+ mUsbResolver = new UsbDeviceHandlerResolver(mUsbManager, mContext, this);
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
+ filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
+ context.registerReceiver(mUsbBroadcastReceiver, filter);
+
+ }
+
+ private synchronized void setActiveDeviceIfSerialMatch(UsbDevice device) {
+ if (device != null && device.getSerialNumber() != null
+ && device.getSerialNumber().equals(mProcessingDeviceSerial)) {
+ mActiveDevice = device;
+ }
+ }
+
+ private synchronized void unsetActiveDeviceIfSerialMatch(UsbDevice device) {
+ mHandler.requestDeviceRemoved();
+ if (mActiveDevice != null && mActiveDevice.getSerialNumber() != null
+ && mActiveDevice.getSerialNumber().equals(device.getSerialNumber())) {
+ mActiveDevice = null;
+ }
+ }
+
+ private synchronized boolean startDeviceProcessingIfNull(UsbDevice device) {
+ if (mActiveDevice == null) {
+ mActiveDevice = device;
+ mProcessingDeviceSerial = device.getSerialNumber();
+ return true;
+ }
+ return false;
+ }
+
+ private synchronized void stopDeviceProcessing() {
+ mActiveDevice = null;
+ mProcessingDeviceSerial = null;
+ }
+
+ private synchronized UsbDevice getActiveDevice() {
+ return mActiveDevice;
+ }
+
+ private boolean deviceMatchedActiveDevice(UsbDevice device) {
+ UsbDevice activeDevice = getActiveDevice();
+ return activeDevice != null && activeDevice.getSerialNumber() != null
+ && activeDevice.getSerialNumber().equals(device.getSerialNumber());
+ }
+
+ /**
+ * Processes device new device.
+ * <p>
+ * It will load existing settings or resolve supported handlers.
+ */
+ public void processDevice(UsbDevice device) {
+ if (!startDeviceProcessingIfNull(device)) {
+ Log.w(TAG, "Currently, other device is being processed");
+ }
+ mCallback.optionsUpdated(mEmptyList);
+ mCallback.processingStateChanged(true);
+
+ UsbDeviceSettings settings = mUsbSettingsStorage.getSettings(device.getSerialNumber());
+ if (settings != null && mUsbResolver.dispatch(
+ mActiveDevice, settings.getHandler(), settings.getAoap())) {
+ if (LOCAL_LOGV) {
+ Log.v(TAG, "Usb Device: " + device + " was sent to component: "
+ + settings.getHandler());
+ }
+ return;
+ }
+ mCallback.titleChanged(device.getManufacturerName() + " " + device.getProductName());
+ mUsbResolver.resolve(device);
+ }
+
+ /**
+ * Applies device settings.
+ */
+ public void applyDeviceSettings(UsbDeviceSettings settings) {
+ mUsbSettingsStorage.saveSettings(settings);
+ mUsbResolver.dispatch(getActiveDevice(), settings.getHandler(), settings.getAoap());
+ }
+
+ /**
+ * Release object.
+ */
+ public void release() {
+ mContext.unregisterReceiver(mUsbBroadcastReceiver);
+ mUsbResolver.release();
+ }
+
+ @Override
+ public void onHandlersResolveCompleted(
+ UsbDevice device, List<UsbDeviceSettings> handlers) {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "onHandlersResolveComplete: " + device);
+ }
+ if (deviceMatchedActiveDevice(device)) {
+ mCallback.processingStateChanged(false);
+ if (handlers.isEmpty()) {
+ onDeviceDispatched();
+ } else if (handlers.size() == 1) {
+ applyDeviceSettings(handlers.get(0));
+ } else {
+ mCallback.optionsUpdated(handlers);
+ }
+ } else {
+ Log.w(TAG, "Handlers ignored as they came for inactive device");
+ }
+ }
+
+ @Override
+ public void onDeviceDispatched() {
+ stopDeviceProcessing();
+ mCallback.shutdown();
+ }
+
+ void doHandleDeviceRemoved() {
+ if (getActiveDevice() == null) {
+ if (LOCAL_LOGD) {
+ Log.d(TAG, "USB device detached");
+ }
+ stopDeviceProcessing();
+ mCallback.shutdown();
+ }
+ }
+
+ private class UsbHostControllerHandler extends Handler {
+ private static final int MSG_DEVICE_REMOVED = 1;
+
+ private static final int DEVICE_REMOVE_TIMEOUT_MS = 500;
+
+ private UsbHostControllerHandler(Looper looper) {
+ super(looper);
+ }
+
+ private void requestDeviceRemoved() {
+ sendEmptyMessageDelayed(MSG_DEVICE_REMOVED, DEVICE_REMOVE_TIMEOUT_MS);
+ }
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_DEVICE_REMOVED:
+ doHandleDeviceRemoved();
+ break;
+ default:
+ Log.w(TAG, "Unhandled message: " + msg);
+ super.handleMessage(msg);
+ }
+ }
+ }
+
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbHostManagementActivity.java b/car-usb-handler/src/android/car/usb/handler/UsbHostManagementActivity.java
new file mode 100644
index 0000000..387ae62
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/UsbHostManagementActivity.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.annotation.Nullable;
+import android.app.Activity;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.PackageManager.NameNotFoundException;
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbManager;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.ListView;
+import android.widget.TextView;
+import java.util.List;
+
+/**
+ * Activity to handle USB device attached.
+ * <p>
+ * When user plugs in USB device: a) Device was used before and user selected handler for it. In
+ * this case handler will be launched. b) Device has not handler assigned. In this case supported
+ * handlers will be captured, and user will be presented with choice to assign default handler.
+ * After that handler will be launched.
+ */
+public class UsbHostManagementActivity extends Activity
+ implements UsbHostController.UsbHostControllerCallbacks {
+ private static final String TAG = UsbHostManagementActivity.class.getSimpleName();
+
+ private HandlersAdapter mListAdapter;
+ private ListView mHandlersList;
+ private LinearLayout mProgressInfo;
+ private UsbHostController mController;
+ private PackageManager mPackageManager;
+
+ private final AdapterView.OnItemClickListener mHandlerClickListener =
+ new AdapterView.OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
+ UsbDeviceSettings settings = (UsbDeviceSettings) parent.getItemAtPosition(position);
+ settings.setDefaultHandler(true);
+ mController.applyDeviceSettings(settings);
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.usb_host);
+ mHandlersList = (ListView) findViewById(R.id.usb_handlers_list);
+ mProgressInfo = (LinearLayout) findViewById(R.id.usb_handlers_progress);
+ mListAdapter = new HandlersAdapter(this);
+ mHandlersList.setAdapter(mListAdapter);
+ mHandlersList.setOnItemClickListener(mHandlerClickListener);
+ mController = new UsbHostController(this, this);
+ mPackageManager = getPackageManager();
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ mController.release();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ UsbDevice connectedDevice = getDevice();
+ if (connectedDevice != null) {
+ mController.processDevice(connectedDevice);
+ } else {
+ finish();
+ }
+ }
+
+ @Override
+ public void shutdown() {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ finish();
+ }
+ });
+ }
+
+ @Override
+ public void processingStateChanged(final boolean processing) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mProgressInfo.setVisibility(processing ? View.VISIBLE : View.GONE);
+ }
+ });
+ }
+
+ @Override
+ public void titleChanged(final String title) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ setTitle(title);
+ }
+ });
+ }
+
+ @Override
+ public void optionsUpdated(final List<UsbDeviceSettings> options) {
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mListAdapter.clear();
+ mListAdapter.addAll(options);
+ }
+ });
+ }
+
+
+ @Override
+ public void onNewIntent(Intent intent) {
+ super.onNewIntent(intent);
+ setIntent(intent);
+ }
+
+ @Nullable
+ private UsbDevice getDevice() {
+ if (!UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(getIntent().getAction())) {
+ return null;
+ }
+ return (UsbDevice) getIntent().getParcelableExtra(UsbManager.EXTRA_DEVICE);
+ }
+
+ private class HandlersAdapter extends ArrayAdapter<UsbDeviceSettings> {
+ class HandlerHolder {
+ public TextView mAppName;
+ public ImageView mAppIcon;
+ }
+
+ HandlersAdapter(Context context) {
+ super(context, R.layout.usb_handler_row);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ View rowView = convertView;
+ if (rowView == null) {
+ rowView = getLayoutInflater().inflate(R.layout.usb_handler_row, null);
+ HandlerHolder holder = new HandlerHolder();
+ holder.mAppName = (TextView) rowView.findViewById(R.id.usb_handler_title);
+ holder.mAppIcon = (ImageView) rowView.findViewById(R.id.usb_handler_icon);
+ rowView.setTag(holder);
+ }
+
+ HandlerHolder holder = (HandlerHolder) rowView.getTag();
+ ComponentName handler = getItem(position).getHandler();
+
+ try {
+ ApplicationInfo appInfo =
+ mPackageManager.getApplicationInfo(handler.getPackageName(), 0);
+ holder.mAppName.setText(appInfo.loadLabel(mPackageManager));
+ holder.mAppIcon.setImageDrawable(appInfo.loadIcon(mPackageManager));
+ } catch (NameNotFoundException e) {
+ Log.e(TAG, "Handling package not found: " + handler.getPackageName());
+ holder.mAppName.setText(handler.flattenToShortString());
+ holder.mAppIcon.setImageResource(android.R.color.transparent);
+ }
+ return rowView;
+ }
+ }
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbSettingsStorage.java b/car-usb-handler/src/android/car/usb/handler/UsbSettingsStorage.java
new file mode 100644
index 0000000..157c92f
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/UsbSettingsStorage.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.util.Log;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Provides API to persist USB device settings.
+ */
+public final class UsbSettingsStorage {
+ private static final String TAG = UsbSettingsStorage.class.getSimpleName();
+
+ private static final String TABLE_USB_SETTINGS = "usb_devices";
+ private static final String COLUMN_SERIAL = "serial";
+ private static final String COLUMN_VID = "vid";
+ private static final String COLUMN_PID = "pid";
+ private static final String COLUMN_NAME = "name";
+ private static final String COLUMN_HANDLER = "handler";
+ private static final String COLUMN_AOAP = "aoap";
+ private static final String COLUMN_DEFAULT_HANDLER = "default_handler";
+
+ private final UsbSettingsDbHelper mDbHelper;
+
+ public UsbSettingsStorage(Context context) {
+ mDbHelper = new UsbSettingsDbHelper(context);
+ }
+
+ /**
+ * Returns settings for {@serialNumber} or null if it doesn't exist.
+ */
+ @Nullable
+ public UsbDeviceSettings getSettings(String serialNumber) {
+ try (SQLiteDatabase db = mDbHelper.getReadableDatabase();
+ Cursor resultCursor = db.query(
+ TABLE_USB_SETTINGS,
+ null,
+ COLUMN_SERIAL + " = ?",
+ new String[]{serialNumber},
+ null,
+ null,
+ null)) {
+ if (resultCursor.getCount() > 1) {
+ throw new RuntimeException("Querying for serial number: " + serialNumber
+ + " returned " + resultCursor.getCount() + " results");
+ }
+ if (resultCursor.getCount() == 0) {
+ Log.w(TAG, "Usb setting missing for device serial: " + serialNumber);
+ return null;
+ }
+ List<UsbDeviceSettings> settings = constructSettings(resultCursor);
+ return settings.get(0);
+ }
+ }
+
+ /**
+ * Saves or updates settings for USB device.
+ */
+ public void saveSettings(UsbDeviceSettings settings) {
+ try (SQLiteDatabase db = mDbHelper.getWritableDatabase()) {
+ long result = db.replace(
+ TABLE_USB_SETTINGS,
+ null,
+ settingsToContentValues(settings));
+ if (result == -1) {
+ Log.e(TAG, "Failed to save settings: " + settings);
+ }
+ }
+ }
+
+ /**
+ * Delete settings for USB device.
+ */
+ public void deleteSettings(String serialNumber, int vid, int pid) {
+ try (SQLiteDatabase db = mDbHelper.getWritableDatabase()) {
+ int result = db.delete(
+ TABLE_USB_SETTINGS,
+ COLUMN_SERIAL + " = ? AND " + COLUMN_VID + " = ? AND " + COLUMN_PID
+ + " = ?",
+ new String[]{serialNumber, Integer.toString(vid), Integer.toString(pid)});
+ if (result == 0) {
+ Log.w(TAG, "No settings with serialNumber: " + serialNumber
+ + " vid: " + vid + " pid: " + pid);
+ }
+ if (result > 1) {
+ Log.e(TAG, "Deleted multiple rows (" + result + ") for serialNumber: "
+ + serialNumber + " vid: " + vid + " pid: " + pid);
+ }
+ }
+ }
+
+ /**
+ * Returns all saved settings.
+ */
+ public List<UsbDeviceSettings> getAllSettings() {
+ try (SQLiteDatabase db = mDbHelper.getReadableDatabase();
+ Cursor resultCursor = db.query(
+ TABLE_USB_SETTINGS,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null)) {
+ return constructSettings(resultCursor);
+ }
+ }
+
+ private List<UsbDeviceSettings> constructSettings(Cursor cursor) {
+ if (!cursor.isBeforeFirst()) {
+ throw new RuntimeException("Cursor is not reset to before first element");
+ }
+ int serialNumberColumnId = cursor.getColumnIndex(COLUMN_SERIAL);
+ int vidColumnId = cursor.getColumnIndex(COLUMN_VID);
+ int pidColumnId = cursor.getColumnIndex(COLUMN_PID);
+ int deviceNameColumnId = cursor.getColumnIndex(COLUMN_NAME);
+ int handlerColumnId = cursor.getColumnIndex(COLUMN_HANDLER);
+ int aoapColumnId = cursor.getColumnIndex(COLUMN_AOAP);
+ List<UsbDeviceSettings> results = new ArrayList<>(cursor.getCount());
+ while (cursor.moveToNext()) {
+ results.add(UsbDeviceSettings.constructSettings(
+ cursor.getString(serialNumberColumnId),
+ cursor.getInt(vidColumnId),
+ cursor.getInt(pidColumnId),
+ cursor.getString(deviceNameColumnId),
+ ComponentName.unflattenFromString(
+ cursor.getString(handlerColumnId)),
+ cursor.getInt(aoapColumnId) != 0));
+ }
+ return results;
+ }
+
+ /**
+ * Converts {@code UsbDeviceSettings} to {@code ContentValues}.
+ */
+ public ContentValues settingsToContentValues(UsbDeviceSettings settings) {
+ ContentValues contentValues = new ContentValues();
+ contentValues.put(COLUMN_SERIAL, settings.getSerialNumber());
+ contentValues.put(COLUMN_VID, settings.getVid());
+ contentValues.put(COLUMN_PID, settings.getPid());
+ contentValues.put(COLUMN_NAME, settings.getDeviceName());
+ contentValues.put(COLUMN_HANDLER, settings.getHandler().flattenToShortString());
+ contentValues.put(COLUMN_AOAP, settings.getAoap() ? 1 : 0);
+ contentValues.put(COLUMN_DEFAULT_HANDLER, settings.isDefaultHandler() ? 1 : 0);
+ return contentValues;
+ }
+
+
+ private static class UsbSettingsDbHelper extends SQLiteOpenHelper {
+ private static final int DATABASE_VERSION = 1;
+ private static final String DATABASE_NAME = "usb_devices.db";
+
+ UsbSettingsDbHelper(Context context) {
+ super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ db.execSQL("CREATE TABLE " + TABLE_USB_SETTINGS + " ("
+ + COLUMN_SERIAL + " TEXT,"
+ + COLUMN_VID + " INTEGER,"
+ + COLUMN_PID + " INTEGER,"
+ + COLUMN_NAME + " TEXT, "
+ + COLUMN_HANDLER + " TEXT,"
+ + COLUMN_AOAP + " INTEGER,"
+ + COLUMN_DEFAULT_HANDLER + " INTEGER," + "PRIMARY KEY (" + COLUMN_SERIAL
+ + "))");
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ // Do nothing at this point. Not required for v1 database.
+ }
+ }
+}
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbUtil.java b/car-usb-handler/src/android/car/usb/handler/UsbUtil.java
new file mode 100644
index 0000000..939fe3f
--- /dev/null
+++ b/car-usb-handler/src/android/car/usb/handler/UsbUtil.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2016 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.car.usb.handler;
+
+import android.hardware.usb.UsbDevice;
+import android.hardware.usb.UsbDeviceConnection;
+import android.hardware.usb.UsbManager;
+import android.text.TextUtils;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * Util methods to work with USB devices.
+ */
+class UsbUtil {
+ public static List<UsbDevice> findAllPossibleAndroidDevices(UsbManager usbManager) {
+ HashMap<String, UsbDevice> devices = usbManager.getDeviceList();
+ ArrayList<UsbDevice> androidDevices = new ArrayList<>(devices.size());
+ for (UsbDevice device : devices.values()) {
+ UsbDeviceConnection connection = openConnection(usbManager, device);
+ if (AoapInterface.isSupported(connection)) {
+ androidDevices.add(device);
+ }
+ connection.close();
+ }
+ return androidDevices;
+ }
+
+ public static UsbDeviceConnection openConnection(UsbManager manager, UsbDevice device) {
+ manager.grantPermission(device);
+ return manager.openDevice(device);
+ }
+
+ public static void sendAoapAccessoryStart(UsbDeviceConnection connection, String manufacturer,
+ String model, String description, String version, String uri, String serial)
+ throws IOException {
+ AoapInterface.sendString(connection, AoapInterface.ACCESSORY_STRING_MANUFACTURER,
+ manufacturer);
+ AoapInterface.sendString(connection, AoapInterface.ACCESSORY_STRING_MODEL,
+ model);
+ AoapInterface.sendString(connection, AoapInterface.ACCESSORY_STRING_DESCRIPTION,
+ description);
+ AoapInterface.sendString(connection, AoapInterface.ACCESSORY_STRING_VERSION,
+ version);
+ AoapInterface.sendString(connection, AoapInterface.ACCESSORY_STRING_URI, uri);
+ AoapInterface.sendString(connection, AoapInterface.ACCESSORY_STRING_SERIAL,serial);
+ AoapInterface.sendAoapStart(connection);
+ }
+
+ public static boolean isTheSameDevice(UsbDevice l, UsbDevice r) {
+ if (TextUtils.equals(l.getManufacturerName(), r.getManufacturerName())
+ && TextUtils.equals(l.getProductName(), r.getProductName())
+ && TextUtils.equals(l.getSerialNumber(), r.getSerialNumber())) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isDevicesMatching(UsbDevice l, UsbDevice r) {
+ if (l.getVendorId() == r.getVendorId() && l.getProductId() == r.getProductId()
+ && TextUtils.equals(l.getSerialNumber(), r.getSerialNumber())) {
+ return true;
+ }
+ return false;
+ }
+
+ public static boolean isDeviceConnected(UsbManager usbManager, UsbDevice device) {
+ HashMap<String, UsbDevice> devices = usbManager.getDeviceList();
+ for (UsbDevice dev : devices.values()) {
+ if (isDevicesMatching(dev, device)) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/car_product/build/car.mk b/car_product/build/car.mk
index fe9b644..5928164 100644
--- a/car_product/build/car.mk
+++ b/car_product/build/car.mk
@@ -91,6 +91,7 @@
Stream \
CarHvacApp \
CarMapsPlaceholder \
+ CarUsbHandler \
android.car \
libvehiclenetwork-native \
libvehiclemonitor-native \
diff --git a/tools/bootanalyze/bootanalyze.py b/tools/bootanalyze/bootanalyze.py
index 4dc0100..1147292 100644
--- a/tools/bootanalyze/bootanalyze.py
+++ b/tools/bootanalyze/bootanalyze.py
@@ -106,7 +106,7 @@
logcat_events, logcat_timing_events = collect_events(
search_events, 'adb logcat -b all -v epoch', timings, cfg['stop_event'])
- dmesg_events, e = collect_events(search_events, 'adb shell dmesg', {})
+ dmesg_events, e = collect_events(search_events, 'adb shell su root dmesg', {})
logcat_event_time = extract_time(
logcat_events, TIME_LOGCAT, float);
diff --git a/tools/bootanalyze/config.yaml b/tools/bootanalyze/config.yaml
index 55c5358..ee1fa9e 100644
--- a/tools/bootanalyze/config.yaml
+++ b/tools/bootanalyze/config.yaml
@@ -7,6 +7,14 @@
kernel: Linux version
android_init_1st_stage: init first stage started
android_init_2st_stage: init second stage started
+ late_init: processing action \(late-init\)
+ fs: processing action \(fs\)
+ post-fs: processing action \(post-fs\)
+ late-fs: processing action \(late-fs\)
+ post-fs-data: processing action \(post-fs-data\)
+ load_persist_props_action: processing action \(load_persist_props_action\)
+ early-boot: processing action \(early-boot\)
+ boot: processing action \(boot\)
ueventd: Starting service 'ueventd'
system_mounted: target=/system
data_mounted: target=/data