Add Android application to handle system ui part
Based on shashlikd from https://github.com/shashlik/shashlikd
1
android/.idea/.name
generated
Normal file
|
|
@ -0,0 +1 @@
|
|||
android
|
||||
26
android/.idea/android.iml
generated
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/../../android/gen" />
|
||||
<option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/../../android/gen" />
|
||||
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/../../android/AndroidManifest.xml" />
|
||||
<option name="RES_FOLDER_RELATIVE_PATH" value="/../../android/res" />
|
||||
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/../../android/assets" />
|
||||
<option name="LIBS_FOLDER_RELATIVE_PATH" value="/../../android/libs" />
|
||||
<option name="PROGUARD_LOGS_FOLDER_RELATIVE_PATH" value="/../../android/proguard_logs" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="false">
|
||||
<output url="file://$MODULE_DIR$/build/production/android" />
|
||||
<output-test url="file://$MODULE_DIR$/build/test/android" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 24 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
</component>
|
||||
</module>
|
||||
22
android/.idea/compiler.xml
generated
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<resourceExtensions />
|
||||
<wildcardResourcePatterns>
|
||||
<entry name="!?*.java" />
|
||||
<entry name="!?*.form" />
|
||||
<entry name="!?*.class" />
|
||||
<entry name="!?*.groovy" />
|
||||
<entry name="!?*.scala" />
|
||||
<entry name="!?*.flex" />
|
||||
<entry name="!?*.kt" />
|
||||
<entry name="!?*.clj" />
|
||||
<entry name="!?*.aj" />
|
||||
</wildcardResourcePatterns>
|
||||
<annotationProcessing>
|
||||
<profile default="true" name="Default" enabled="false">
|
||||
<processorPath useClasspath="true" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
||||
3
android/.idea/copyright/profiles_settings.xml
generated
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<component name="CopyrightManager">
|
||||
<settings default="" />
|
||||
</component>
|
||||
6
android/.idea/encodings.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="PROJECT" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
38
android/.idea/misc.xml
generated
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="NullableNotNullManager">
|
||||
<option name="myDefaultNullable" value="android.support.annotation.Nullable" />
|
||||
<option name="myDefaultNotNull" value="android.support.annotation.NonNull" />
|
||||
<option name="myNullables">
|
||||
<value>
|
||||
<list size="4">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable" />
|
||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable" />
|
||||
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
<option name="myNotNulls">
|
||||
<value>
|
||||
<list size="4">
|
||||
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull" />
|
||||
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull" />
|
||||
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull" />
|
||||
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull" />
|
||||
</list>
|
||||
</value>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
||||
<OptionsSetting value="true" id="Add" />
|
||||
<OptionsSetting value="true" id="Remove" />
|
||||
<OptionsSetting value="true" id="Checkout" />
|
||||
<OptionsSetting value="true" id="Update" />
|
||||
<OptionsSetting value="true" id="Status" />
|
||||
<OptionsSetting value="true" id="Edit" />
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" default="false" assert-keyword="true" jdk-15="true" />
|
||||
</project>
|
||||
8
android/.idea/modules.xml
generated
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/android.iml" filepath="$PROJECT_DIR$/.idea/android.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
android/.idea/vcs.xml
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
680
android/.idea/workspace.xml
generated
Normal file
|
|
@ -0,0 +1,680 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AndroidLayouts">
|
||||
<shared>
|
||||
<config />
|
||||
</shared>
|
||||
</component>
|
||||
<component name="AndroidLogFilters">
|
||||
<option name="TOOL_WINDOW_CONFIGURED_FILTER" value="Show only selected application" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="35ea61e6-5e14-46c0-b2f9-ddcf0b564421" name="Default" comment="">
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/CMakeLists.txt" afterPath="$PROJECT_DIR$/../src/CMakeLists.txt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/anbox/container.cpp" afterPath="$PROJECT_DIR$/../src/anbox/container.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/anbox/container_connector.cpp" afterPath="$PROJECT_DIR$/../src/anbox/container_connector.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/anbox/network/qemu_pipe_connection_creator.cpp" afterPath="$PROJECT_DIR$/../src/anbox/network/qemu_pipe_connection_creator.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/anbox/network/qemu_pipe_connection_creator.h" afterPath="$PROJECT_DIR$/../src/anbox/network/qemu_pipe_connection_creator.h" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/anbox/support/boot_properties_message_processor.cpp" afterPath="$PROJECT_DIR$/../src/anbox/support/boot_properties_message_processor.cpp" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../tests/CMakeLists.txt" afterPath="$PROJECT_DIR$/../tests/CMakeLists.txt" />
|
||||
</list>
|
||||
<ignored path="android.iws" />
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
|
||||
<option name="TRACKING_ENABLED" value="true" />
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
|
||||
<component name="CreatePatchCommitExecutor">
|
||||
<option name="PATCH_PATH" value="" />
|
||||
</component>
|
||||
<component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
|
||||
<component name="FavoritesManager">
|
||||
<favorites_list name="android" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<leaf>
|
||||
<file leaf-file-name="AndroidManifest.xml" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/AndroidManifest.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="1.1033275">
|
||||
<caret line="42" column="16" selection-start-line="42" selection-start-column="16" selection-end-line="42" selection-end-column="16" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="MainApplication.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/MainApplication.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#165#166#0" expanded="true" />
|
||||
<element signature="e#207#208#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="MainActivity.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/MainActivity.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="9" column="44" selection-start-line="9" selection-start-column="44" selection-end-line="9" selection-end-column="44" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="KeyButtonView.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/KeyButtonView.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#9257#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BootReceiver.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/BootReceiver.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="27" column="0" selection-start-line="27" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="NavigationBarView.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/NavigationBarView.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#327#328#0" expanded="true" />
|
||||
<element signature="e#364#365#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="NavBar.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/NavBar.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="NotificationListener.java" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/NotificationListener.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="9" column="71" selection-start-line="9" selection-start-column="71" selection-end-line="9" selection-end-column="71" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
|
||||
</component>
|
||||
<component name="GradleLocalSettings">
|
||||
<option name="externalProjectsViewState">
|
||||
<projects_view />
|
||||
</option>
|
||||
</component>
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/java/org/anbox/shashlikssytem/MainApplication.java" />
|
||||
<option value="$PROJECT_DIR$/java/org/anbox/shashlikssytem/NavigationBarView.java" />
|
||||
<option value="$PROJECT_DIR$/java/org/anbox/shashlikssytem/NotificationListener.java" />
|
||||
<option value="$PROJECT_DIR$/java/org/anbox/shashlikssytem/MainActivity.java" />
|
||||
<option value="$PROJECT_DIR$/java/org/anbox/shashlikssytem/BootReceiver.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="x" value="57" />
|
||||
<option name="y" value="24" />
|
||||
<option name="width" value="2503" />
|
||||
<option name="height" value="1056" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true">
|
||||
<OptionsSetting value="true" id="Add" />
|
||||
<OptionsSetting value="true" id="Remove" />
|
||||
<OptionsSetting value="true" id="Checkout" />
|
||||
<OptionsSetting value="true" id="Update" />
|
||||
<OptionsSetting value="true" id="Status" />
|
||||
<OptionsSetting value="true" id="Edit" />
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||
<flattenPackages />
|
||||
<showMembers />
|
||||
<showModules />
|
||||
<showLibraryContents />
|
||||
<hideEmptyPackages />
|
||||
<abbreviatePackageNames />
|
||||
<autoscrollToSource />
|
||||
<autoscrollFromSource />
|
||||
<sortByType />
|
||||
<manualOrder />
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="android" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="android" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="android" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="android" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="android" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="java" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="org" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="anbox" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="shashlikssytem" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scratches" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scope" />
|
||||
<pane id="AndroidView">
|
||||
<subPane />
|
||||
</pane>
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
<property name="android.sdk.path" value="$USER_HOME$/Android/Sdk" />
|
||||
<property name="android.project.structure.last.selected" value="SDK Location" />
|
||||
<property name="android.project.structure.proportion" value="0.15" />
|
||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||
<property name="project.structure.last.edited" value="Modules" />
|
||||
<property name="project.structure.proportion" value="0.15" />
|
||||
<property name="project.structure.side.proportion" value="0.2" />
|
||||
</component>
|
||||
<component name="RunManager">
|
||||
<configuration default="true" type="AndroidRunConfigurationType" factoryName="Android Application">
|
||||
<module name="" />
|
||||
<option name="DEPLOY" value="true" />
|
||||
<option name="ARTIFACT_NAME" value="" />
|
||||
<option name="PM_INSTALL_OPTIONS" value="" />
|
||||
<option name="ACTIVITY_EXTRA_FLAGS" value="" />
|
||||
<option name="MODE" value="default_activity" />
|
||||
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
|
||||
<option name="PREFERRED_AVD" value="" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
|
||||
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
|
||||
<option name="FORCE_STOP_RUNNING_APP" value="true" />
|
||||
<option name="DEBUGGER_TYPE" value="Java" />
|
||||
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
|
||||
<option name="PREFERRED_AVD" value="" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
|
||||
<Hybrid>
|
||||
<option name="WORKING_DIR" value="" />
|
||||
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
||||
</Hybrid>
|
||||
<Native>
|
||||
<option name="WORKING_DIR" value="" />
|
||||
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
||||
</Native>
|
||||
<Java />
|
||||
<Profilers>
|
||||
<option name="GAPID_DISABLE_PCS" value="false" />
|
||||
</Profilers>
|
||||
<option name="DEEP_LINK" value="" />
|
||||
<option name="ACTIVITY_CLASS" value="" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="AndroidTestRunConfigurationType" factoryName="Android Tests">
|
||||
<module name="" />
|
||||
<option name="TESTING_TYPE" value="0" />
|
||||
<option name="INSTRUMENTATION_RUNNER_CLASS" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="CLASS_NAME" value="" />
|
||||
<option name="PACKAGE_NAME" value="" />
|
||||
<option name="EXTRA_OPTIONS" value="" />
|
||||
<option name="TARGET_SELECTION_MODE" value="SHOW_DIALOG" />
|
||||
<option name="PREFERRED_AVD" value="" />
|
||||
<option name="CLEAR_LOGCAT" value="false" />
|
||||
<option name="SHOW_LOGCAT_AUTOMATICALLY" value="true" />
|
||||
<option name="SKIP_NOOP_APK_INSTALLATIONS" value="true" />
|
||||
<option name="FORCE_STOP_RUNNING_APP" value="true" />
|
||||
<option name="DEBUGGER_TYPE" value="Java" />
|
||||
<option name="USE_LAST_SELECTED_DEVICE" value="false" />
|
||||
<option name="PREFERRED_AVD" value="" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_CONFIGURATION_ID" value="-1" />
|
||||
<option name="SELECTED_CLOUD_MATRIX_PROJECT_ID" value="" />
|
||||
<Hybrid>
|
||||
<option name="WORKING_DIR" value="" />
|
||||
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
||||
</Hybrid>
|
||||
<Native>
|
||||
<option name="WORKING_DIR" value="" />
|
||||
<option name="TARGET_LOGGING_CHANNELS" value="lldb process:gdb-remote packets" />
|
||||
</Native>
|
||||
<Java />
|
||||
<Profilers>
|
||||
<option name="GAPID_DISABLE_PCS" value="false" />
|
||||
</Profilers>
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Application" factoryName="Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="GradleRunConfiguration" factoryName="Gradle">
|
||||
<ExternalSystemSettings>
|
||||
<option name="executionName" />
|
||||
<option name="externalProjectPath" />
|
||||
<option name="externalSystemIdString" value="GRADLE" />
|
||||
<option name="scriptParameters" />
|
||||
<option name="taskDescriptions">
|
||||
<list />
|
||||
</option>
|
||||
<option name="taskNames">
|
||||
<list />
|
||||
</option>
|
||||
<option name="vmOptions" />
|
||||
</ExternalSystemSettings>
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JUnit" factoryName="JUnit">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="singleModule" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JUnitTestDiscovery" factoryName="JUnit Test Discovery" changeList="All">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="singleModule" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="JarApplication" factoryName="JAR Application">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Java Scratch" factoryName="Java Scratch">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<option name="SCRATCH_FILE_ID" value="0" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PROGRAM_PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="ENABLE_SWING_INSPECTOR" value="false" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<module name="" />
|
||||
<envs />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Remote" factoryName="Remote">
|
||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||
<option name="SERVER_MODE" value="false" />
|
||||
<option name="SHMEM_ADDRESS" value="javadebug" />
|
||||
<option name="HOST" value="localhost" />
|
||||
<option name="PORT" value="5005" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="TestNG" factoryName="TestNG">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="SUITE_NAME" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="GROUP_NAME" />
|
||||
<option name="TEST_OBJECT" value="CLASS" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$MODULE_DIR$" />
|
||||
<option name="OUTPUT_DIRECTORY" />
|
||||
<option name="ANNOTATION_TYPE" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="singleModule" />
|
||||
</option>
|
||||
<option name="USE_DEFAULT_REPORTERS" value="false" />
|
||||
<option name="PROPERTIES_FILE" />
|
||||
<envs />
|
||||
<properties />
|
||||
<listeners />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="TestNGTestDiscovery" factoryName="TestNG Test Discovery" changeList="All">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<module name="" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="SUITE_NAME" />
|
||||
<option name="PACKAGE_NAME" />
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="GROUP_NAME" />
|
||||
<option name="TEST_OBJECT" value="CLASS" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" />
|
||||
<option name="OUTPUT_DIRECTORY" />
|
||||
<option name="ANNOTATION_TYPE" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="singleModule" />
|
||||
</option>
|
||||
<option name="USE_DEFAULT_REPORTERS" value="false" />
|
||||
<option name="PROPERTIES_FILE" />
|
||||
<envs />
|
||||
<properties />
|
||||
<listeners />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration name="<template>" type="Applet" default="true" selected="false">
|
||||
<option name="MAIN_CLASS_NAME" />
|
||||
<option name="HTML_FILE_NAME" />
|
||||
<option name="HTML_USED" value="false" />
|
||||
<option name="WIDTH" value="400" />
|
||||
<option name="HEIGHT" value="300" />
|
||||
<option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
</configuration>
|
||||
<configuration name="<template>" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" default="true" selected="false">
|
||||
<option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="Default task">
|
||||
<changelist id="35ea61e6-5e14-46c0-b2f9-ddcf0b564421" name="Default" comment="" />
|
||||
<created>1466673716768</created>
|
||||
<option name="number" value="Default" />
|
||||
<updated>1466673716768</updated>
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="57" y="24" width="2503" height="1056" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Palette	" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Android Model" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Android Monitor" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32939914" sideWeight="0.4985755" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Captures" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32939914" sideWeight="0.5046805" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Build Variants" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.32939914" sideWeight="0.4953195" order="-1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25234026" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="VcsContentAnnotationSettings">
|
||||
<option name="myLimit" value="2678400000" />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
<watches-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/NavigationBarView.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#327#328#0" expanded="true" />
|
||||
<element signature="e#364#365#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/NavBar.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/NotificationListener.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="9" column="71" selection-start-line="9" selection-start-column="71" selection-end-line="9" selection-end-column="71" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/MainApplication.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#165#166#0" expanded="true" />
|
||||
<element signature="e#207#208#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/MainActivity.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="9" column="44" selection-start-line="9" selection-start-column="44" selection-end-line="9" selection-end-column="44" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/KeyButtonView.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#0#9257#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/java/org/anbox/shashlikssytem/BootReceiver.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="0.0">
|
||||
<caret line="27" column="0" selection-start-line="27" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/AndroidManifest.xml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state vertical-scroll-proportion="1.1033275">
|
||||
<caret line="42" column="16" selection-start-line="42" selection-start-column="16" selection-end-line="42" selection-end-column="16" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
<state key="ArtifactsStructureConfigurable.UI">
|
||||
<settings>
|
||||
<artifact-editor />
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="FacetStructureConfigurable.UI">
|
||||
<settings>
|
||||
<last-edited>Android</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="GlobalLibrariesConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="JdkListConfigurable.UI">
|
||||
<settings>
|
||||
<last-edited>1.7</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ModuleStructureConfigurable.UI">
|
||||
<settings>
|
||||
<last-edited>android</last-edited>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
<state key="ProjectLibrariesConfigurable.UI">
|
||||
<settings>
|
||||
<splitter-proportions>
|
||||
<option name="proportions">
|
||||
<list>
|
||||
<option value="0.2" />
|
||||
</list>
|
||||
</option>
|
||||
</splitter-proportions>
|
||||
</settings>
|
||||
</state>
|
||||
</states>
|
||||
</component>
|
||||
</project>
|
||||
24
android/Android.mk
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
LOCAL_PATH:= $(call my-dir)
|
||||
include $(CLEAR_VARS)
|
||||
|
||||
LOCAL_MODULE_TAGS := optional
|
||||
LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src/java
|
||||
LOCAL_SRC_FILES := $(call all-java-files-under, java)
|
||||
LOCAL_JAVA_LIBRARIES := telephony-common
|
||||
# Block certain packages from being installed
|
||||
LOCAL_OVERRIDES_PACKAGES := \
|
||||
SystemUI \
|
||||
Home \
|
||||
Launcher2 \
|
||||
Calculator \
|
||||
BasicDreams \
|
||||
Calendar \
|
||||
PrintSpooler \
|
||||
WallpaperCropper
|
||||
LOCAL_PACKAGE_NAME := anboxd
|
||||
LOCAL_CERTIFICATE := platform
|
||||
LOCAL_PRIVILEGED_MODULE := true
|
||||
|
||||
include $(BUILD_PACKAGE)
|
||||
|
||||
include $(call all-makefiles-under,$(LOCAL_PATH))
|
||||
53
android/AndroidManifest.xml
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.anbox" >
|
||||
|
||||
<uses-permission android:name="android.permission.INJECT_EVENTS" />
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
||||
<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
|
||||
<uses-permission android:name="android.permission.STATUS_BAR" />
|
||||
<uses-permission android:name="android.permission.STATUS_BAR_SERVICE" />
|
||||
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
|
||||
|
||||
<application
|
||||
android:name=".MainApplication"
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:theme="@style/AppTheme" >
|
||||
|
||||
<receiver
|
||||
android:name=".BootReceiver"
|
||||
android:enabled="true"
|
||||
android:exported="true" >
|
||||
<intent-filter android:priority="1000" >
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
<service
|
||||
android:name=".NotificationListener"
|
||||
android:enabled="true"
|
||||
android:exported="true"
|
||||
android:label="@string/service_name"
|
||||
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE" >
|
||||
<intent-filter>
|
||||
<action android:name="android.service.notification.NotificationListenerService" />
|
||||
</intent-filter>
|
||||
</service>
|
||||
|
||||
<service
|
||||
android:name=".NavBar"
|
||||
android:enabled="true"
|
||||
android:exported="true" >
|
||||
<intent-filter>
|
||||
<action android:name="org.anbox.NavBar"/>
|
||||
</intent-filter>
|
||||
</service>
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
3
android/README.md
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# Android Anbox service
|
||||
|
||||
This is based on shashlikd from https://github.com/shashlik/shashlikd
|
||||
BIN
android/build/production/android/org/anbox/BuildConfig.class
Normal file
BIN
android/build/production/android/org/anbox/R$attr.class
Normal file
BIN
android/build/production/android/org/anbox/R$color.class
Normal file
BIN
android/build/production/android/org/anbox/R$dimen.class
Normal file
BIN
android/build/production/android/org/anbox/R$drawable.class
Normal file
BIN
android/build/production/android/org/anbox/R$fraction.class
Normal file
BIN
android/build/production/android/org/anbox/R$id.class
Normal file
BIN
android/build/production/android/org/anbox/R$integer.class
Normal file
BIN
android/build/production/android/org/anbox/R$layout.class
Normal file
BIN
android/build/production/android/org/anbox/R$menu.class
Normal file
BIN
android/build/production/android/org/anbox/R$mipmap.class
Normal file
BIN
android/build/production/android/org/anbox/R$string.class
Normal file
BIN
android/build/production/android/org/anbox/R$style.class
Normal file
BIN
android/build/production/android/org/anbox/R$styleable.class
Normal file
BIN
android/build/production/android/org/anbox/R.class
Normal file
8
android/gen/org/anbox/BuildConfig.java
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
/*___Generated_by_IDEA___*/
|
||||
|
||||
package org.anbox;
|
||||
|
||||
/* This stub is only used by the IDE. It is NOT the BuildConfig class actually packed into the APK */
|
||||
public final class BuildConfig {
|
||||
public final static boolean DEBUG = Boolean.parseBoolean(null);
|
||||
}
|
||||
7
android/gen/org/anbox/Manifest.java
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
/*___Generated_by_IDEA___*/
|
||||
|
||||
package org.anbox;
|
||||
|
||||
/* This stub is only used by the IDE. It is NOT the Manifest class actually packed into the APK */
|
||||
public final class Manifest {
|
||||
}
|
||||
7
android/gen/org/anbox/R.java
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
/*___Generated_by_IDEA___*/
|
||||
|
||||
package org.anbox;
|
||||
|
||||
/* This stub is only used by the IDE. It is NOT the R class actually packed into the APK */
|
||||
public final class R {
|
||||
}
|
||||
129
android/java/org/anbox/shashlikssytem/BootReceiver.java
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
package org.anbox;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.util.Log;
|
||||
import android.os.SystemProperties;
|
||||
import android.os.StrictMode;
|
||||
import java.lang.Process;
|
||||
import java.lang.ProcessBuilder;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.MalformedURLException;
|
||||
import java.net.URL;
|
||||
import android.net.Uri;
|
||||
|
||||
import java.io.RandomAccessFile;
|
||||
import java.io.FileWriter;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.File;
|
||||
|
||||
public class BootReceiver extends BroadcastReceiver {
|
||||
public BootReceiver() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
//start shashlikd app wide services
|
||||
MainApplication app = ((MainApplication) context.getApplicationContext());
|
||||
app.startServices();
|
||||
|
||||
//Make a HTTP request
|
||||
//this does two things; fetches the name of the APK to run (bit overkill, when it could be a simple built prop)
|
||||
//informs the desktop side we're loaded, incase it needs to send anything with a fully operation system
|
||||
|
||||
//Android generally blocks network in the main thread, but we're only going to be showing a black screen idling anyway.
|
||||
//may as well disable that setting
|
||||
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
|
||||
.permitAll().build();
|
||||
StrictMode.setThreadPolicy(policy);
|
||||
|
||||
//Get and install the APK if needed
|
||||
//if the APK doesn't exist the server will return a 403
|
||||
//10.0.2.2 is a special qemu setup for localhost
|
||||
try {
|
||||
Log.d("Shashlikd", "Fetching APK");
|
||||
URL url = new URL("http://10.0.2.2:60057/apk_file");
|
||||
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
||||
conn.connect();
|
||||
int responseCode = conn.getResponseCode();
|
||||
if (responseCode == HttpURLConnection.HTTP_OK) {
|
||||
// opens input stream from the HTTP connection
|
||||
InputStream inputStream = conn.getInputStream();
|
||||
|
||||
Log.d("Shashlikd", "Saving APK");
|
||||
// opens an output stream to save into file
|
||||
|
||||
File outputDir = context.getCacheDir();
|
||||
File outputFile = File.createTempFile("apkSave", ".apk", outputDir);
|
||||
outputFile.setReadable(true, false);
|
||||
FileOutputStream outputStream = new FileOutputStream(outputFile);
|
||||
|
||||
int bytesRead = -1;
|
||||
byte[] buffer = new byte[4096];
|
||||
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
||||
outputStream.write(buffer, 0, bytesRead);
|
||||
}
|
||||
|
||||
outputStream.close();
|
||||
inputStream.close();
|
||||
|
||||
Log.d("Shashlikd", "File downloaded");
|
||||
Log.d("Shashlikd", outputFile.getPath());
|
||||
|
||||
Log.d("Shashlikd", "Installing APK");
|
||||
|
||||
Process result = new ProcessBuilder()
|
||||
.command("pm", "install", "-r", "-d", outputFile.getPath())
|
||||
.start();
|
||||
result.waitFor();
|
||||
Log.d("Shashlikd", "Apk install finished with " + result.exitValue());
|
||||
}
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
|
||||
//Find the name of the APK to run and start the main activity
|
||||
try {
|
||||
Log.d("Shashlikd", "Getting APK ID");
|
||||
URL url = new URL("http://10.0.2.2:60057/startup");
|
||||
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
|
||||
|
||||
conn.connect();
|
||||
InputStream inputStream = conn.getInputStream();
|
||||
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
|
||||
String apk = reader.readLine();
|
||||
|
||||
if (!apk.isEmpty()) {
|
||||
//now try to start that APK
|
||||
Log.d("Shashlikd", "STARTING");
|
||||
Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage(apk);
|
||||
if (launchIntent != null) {
|
||||
context.startActivity(launchIntent);
|
||||
} else {
|
||||
Log.e("Shashlikd", "APK not installed");
|
||||
}
|
||||
} else {
|
||||
Log.w("Shashlikd", "No APK name returned");
|
||||
}
|
||||
} catch (MalformedURLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
252
android/java/org/anbox/shashlikssytem/KeyButtonView.java
Normal file
|
|
@ -0,0 +1,252 @@
|
|||
/*
|
||||
* Copyright (C) 2008 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 org.anbox;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.ObjectAnimator;
|
||||
import android.app.ActivityManager;
|
||||
import android.content.Context;
|
||||
import android.content.res.TypedArray;
|
||||
import android.hardware.input.InputManager;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.Log;
|
||||
import android.view.HapticFeedbackConstants;
|
||||
import android.view.InputDevice;
|
||||
import android.view.KeyCharacterMap;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.SoundEffectConstants;
|
||||
import android.view.View;
|
||||
import android.view.ViewConfiguration;
|
||||
import android.view.accessibility.AccessibilityEvent;
|
||||
import android.view.accessibility.AccessibilityNodeInfo;
|
||||
import android.widget.ImageView;
|
||||
|
||||
//import org.anbox.R;
|
||||
|
||||
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_CLICK;
|
||||
import static android.view.accessibility.AccessibilityNodeInfo.ACTION_LONG_CLICK;
|
||||
|
||||
public class KeyButtonView extends ImageView {
|
||||
private static final String TAG = "StatusBar.KeyButtonView";
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
// TODO: Get rid of this
|
||||
public static final float DEFAULT_QUIESCENT_ALPHA = 1f;
|
||||
|
||||
private long mDownTime;
|
||||
private int mCode;
|
||||
private int mTouchSlop;
|
||||
private float mDrawingAlpha = 1f;
|
||||
private float mQuiescentAlpha = DEFAULT_QUIESCENT_ALPHA;
|
||||
private boolean mSupportsLongpress = true;
|
||||
private AudioManager mAudioManager;
|
||||
private Animator mAnimateToQuiescent = new ObjectAnimator();
|
||||
|
||||
private final Runnable mCheckLongPress = new Runnable() {
|
||||
public void run() {
|
||||
if (isPressed()) {
|
||||
// Log.d("KeyButtonView", "longpressed: " + this);
|
||||
if (isLongClickable()) {
|
||||
// Just an old-fashioned ImageView
|
||||
performLongClick();
|
||||
} else {
|
||||
sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_LONG_PRESS);
|
||||
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
public KeyButtonView(Context context, AttributeSet attrs) {
|
||||
this(context, attrs, 0);
|
||||
}
|
||||
|
||||
public KeyButtonView(Context context, AttributeSet attrs, int defStyle) {
|
||||
super(context, attrs);
|
||||
|
||||
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.KeyButtonView,
|
||||
defStyle, 0);
|
||||
|
||||
mCode = a.getInteger(R.styleable.KeyButtonView_keyCode, 0);
|
||||
|
||||
mSupportsLongpress = a.getBoolean(R.styleable.KeyButtonView_keyRepeat, true);
|
||||
|
||||
|
||||
setDrawingAlpha(mQuiescentAlpha);
|
||||
|
||||
a.recycle();
|
||||
|
||||
setClickable(true);
|
||||
mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
|
||||
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
||||
//setBackground(new KeyButtonRipple(context, this));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) {
|
||||
super.onInitializeAccessibilityNodeInfo(info);
|
||||
if (mCode != 0) {
|
||||
info.addAction(new AccessibilityNodeInfo.AccessibilityAction(ACTION_CLICK, null));
|
||||
if (mSupportsLongpress) {
|
||||
info.addAction(
|
||||
new AccessibilityNodeInfo.AccessibilityAction(ACTION_LONG_CLICK, null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onWindowVisibilityChanged(int visibility) {
|
||||
super.onWindowVisibilityChanged(visibility);
|
||||
if (visibility != View.VISIBLE) {
|
||||
jumpDrawablesToCurrentState();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean performAccessibilityAction(int action, Bundle arguments) {
|
||||
if (action == ACTION_CLICK && mCode != 0) {
|
||||
sendEvent(KeyEvent.ACTION_DOWN, 0, SystemClock.uptimeMillis());
|
||||
sendEvent(KeyEvent.ACTION_UP, 0);
|
||||
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
|
||||
playSoundEffect(SoundEffectConstants.CLICK);
|
||||
return true;
|
||||
} else if (action == ACTION_LONG_CLICK && mCode != 0 && mSupportsLongpress) {
|
||||
sendEvent(KeyEvent.ACTION_DOWN, KeyEvent.FLAG_LONG_PRESS);
|
||||
sendEvent(KeyEvent.ACTION_UP, 0);
|
||||
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_LONG_CLICKED);
|
||||
return true;
|
||||
}
|
||||
return super.performAccessibilityAction(action, arguments);
|
||||
}
|
||||
|
||||
public void setQuiescentAlpha(float alpha, boolean animate) {
|
||||
mAnimateToQuiescent.cancel();
|
||||
alpha = Math.min(Math.max(alpha, 0), 1);
|
||||
if (alpha == mQuiescentAlpha && alpha == mDrawingAlpha) return;
|
||||
mQuiescentAlpha = alpha;
|
||||
if (DEBUG) Log.d(TAG, "New quiescent alpha = " + mQuiescentAlpha);
|
||||
if (animate) {
|
||||
mAnimateToQuiescent = animateToQuiescent();
|
||||
mAnimateToQuiescent.start();
|
||||
} else {
|
||||
setDrawingAlpha(mQuiescentAlpha);
|
||||
}
|
||||
}
|
||||
|
||||
private ObjectAnimator animateToQuiescent() {
|
||||
return ObjectAnimator.ofFloat(this, "drawingAlpha", mQuiescentAlpha);
|
||||
}
|
||||
|
||||
public float getQuiescentAlpha() {
|
||||
return mQuiescentAlpha;
|
||||
}
|
||||
|
||||
public float getDrawingAlpha() {
|
||||
return mDrawingAlpha;
|
||||
}
|
||||
|
||||
public void setDrawingAlpha(float x) {
|
||||
setImageAlpha((int) (x * 255));
|
||||
mDrawingAlpha = x;
|
||||
}
|
||||
|
||||
public boolean onTouchEvent(MotionEvent ev) {
|
||||
final int action = ev.getAction();
|
||||
int x, y;
|
||||
|
||||
switch (action) {
|
||||
case MotionEvent.ACTION_DOWN:
|
||||
mDownTime = SystemClock.uptimeMillis();
|
||||
setPressed(true);
|
||||
if (mCode != 0) {
|
||||
sendEvent(KeyEvent.ACTION_DOWN, 0, mDownTime);
|
||||
} else {
|
||||
// Provide the same haptic feedback that the system offers for virtual keys.
|
||||
performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
|
||||
}
|
||||
if (mSupportsLongpress) {
|
||||
removeCallbacks(mCheckLongPress);
|
||||
postDelayed(mCheckLongPress, ViewConfiguration.getLongPressTimeout());
|
||||
}
|
||||
break;
|
||||
case MotionEvent.ACTION_MOVE:
|
||||
x = (int)ev.getX();
|
||||
y = (int)ev.getY();
|
||||
setPressed(x >= -mTouchSlop
|
||||
&& x < getWidth() + mTouchSlop
|
||||
&& y >= -mTouchSlop
|
||||
&& y < getHeight() + mTouchSlop);
|
||||
break;
|
||||
case MotionEvent.ACTION_CANCEL:
|
||||
setPressed(false);
|
||||
if (mCode != 0) {
|
||||
sendEvent(KeyEvent.ACTION_UP, KeyEvent.FLAG_CANCELED);
|
||||
}
|
||||
if (mSupportsLongpress) {
|
||||
removeCallbacks(mCheckLongPress);
|
||||
}
|
||||
break;
|
||||
case MotionEvent.ACTION_UP:
|
||||
final boolean doIt = isPressed();
|
||||
setPressed(false);
|
||||
if (mCode != 0) {
|
||||
if (doIt) {
|
||||
sendEvent(KeyEvent.ACTION_UP, 0);
|
||||
sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);
|
||||
playSoundEffect(SoundEffectConstants.CLICK);
|
||||
} else {
|
||||
sendEvent(KeyEvent.ACTION_UP, KeyEvent.FLAG_CANCELED);
|
||||
}
|
||||
} else {
|
||||
// no key code, just a regular ImageView
|
||||
if (doIt) {
|
||||
performClick();
|
||||
}
|
||||
}
|
||||
if (mSupportsLongpress) {
|
||||
removeCallbacks(mCheckLongPress);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void playSoundEffect(int soundConstant) {
|
||||
// mAudioManager.playSoundEffect(soundConstant, ActivityManager.getCurrentUser());
|
||||
};
|
||||
|
||||
public void sendEvent(int action, int flags) {
|
||||
sendEvent(action, flags, SystemClock.uptimeMillis());
|
||||
}
|
||||
|
||||
void sendEvent(int action, int flags, long when) {
|
||||
final int repeatCount = (flags & KeyEvent.FLAG_LONG_PRESS) != 0 ? 1 : 0;
|
||||
final KeyEvent ev = new KeyEvent(mDownTime, when, action, mCode, repeatCount,
|
||||
0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
|
||||
flags | KeyEvent.FLAG_FROM_SYSTEM | KeyEvent.FLAG_VIRTUAL_HARD_KEY,
|
||||
InputDevice.SOURCE_KEYBOARD);
|
||||
InputManager.getInstance().injectInputEvent(ev,
|
||||
InputManager.INJECT_INPUT_EVENT_MODE_ASYNC);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
41
android/java/org/anbox/shashlikssytem/MainActivity.java
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
package org.anbox;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
|
||||
public class MainActivity extends Activity {
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
startService(new Intent(MainActivity.this, NotificationListener.class));
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
getMenuInflater().inflate(R.menu.menu_main, menu);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
// Handle action bar item clicks here. The action bar will
|
||||
// automatically handle clicks on the Home/Up button, so long
|
||||
// as you specify a parent activity in AndroidManifest.xml.
|
||||
int id = item.getItemId();
|
||||
|
||||
//noinspection SimplifiableIfStatement
|
||||
if (id == R.id.action_settings) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
}
|
||||
11
android/java/org/anbox/shashlikssytem/MainApplication.java
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
package org.anbox;
|
||||
|
||||
import android.app.Application;
|
||||
|
||||
public class MainApplication extends Application {
|
||||
private NavBar mNavBar;
|
||||
|
||||
public void startServices() {
|
||||
mNavBar = new NavBar(this);
|
||||
}
|
||||
}
|
||||
67
android/java/org/anbox/shashlikssytem/NavBar.java
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
package org.anbox;
|
||||
|
||||
import android.app.ActivityManager;
|
||||
import android.app.Service;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.graphics.PixelFormat;
|
||||
import android.os.IBinder;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
import android.view.WindowManager;
|
||||
|
||||
public class NavBar extends Service {
|
||||
private NavigationBarView mNavigationBarView = null;
|
||||
private Context mContext;
|
||||
private WindowManager mWindowManager;
|
||||
|
||||
public NavBar(Context context) {
|
||||
mContext = context;
|
||||
mNavigationBarView =
|
||||
(NavigationBarView) View.inflate(mContext, R.layout.navigation_bar, null);
|
||||
|
||||
mWindowManager = (WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
|
||||
mWindowManager.addView(mNavigationBarView, getNavigationBarLayoutParams());
|
||||
show();
|
||||
}
|
||||
|
||||
private WindowManager.LayoutParams getNavigationBarLayoutParams() {
|
||||
WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
|
||||
WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT,
|
||||
WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW+19, //TYPE_NAVIGATION_BAR, Private API, which for some reason I can't include...
|
||||
0
|
||||
| WindowManager.LayoutParams.FLAG_TOUCHABLE_WHEN_WAKING
|
||||
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|
||||
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
|
||||
| WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
|
||||
| WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
|
||||
PixelFormat.TRANSLUCENT);
|
||||
// this will allow the navbar to run in an overlay on devices that support this
|
||||
lp.flags |= WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
|
||||
|
||||
lp.setTitle("NavigationBar");
|
||||
lp.windowAnimations = 0;
|
||||
return lp;
|
||||
}
|
||||
|
||||
public void show() {
|
||||
WindowManager.LayoutParams lp =
|
||||
(android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams();
|
||||
lp.flags &= ~WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
|
||||
|
||||
|
||||
mWindowManager.updateViewLayout(mNavigationBarView, lp);
|
||||
}
|
||||
|
||||
public void hide() {
|
||||
WindowManager.LayoutParams lp =
|
||||
(android.view.WindowManager.LayoutParams) mNavigationBarView.getLayoutParams();
|
||||
lp.flags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
|
||||
mWindowManager.updateViewLayout(mNavigationBarView, lp);
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
14
android/java/org/anbox/shashlikssytem/NavigationBarView.java
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
package org.anbox;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.util.Log;
|
||||
import android.view.MotionEvent;
|
||||
|
||||
public class NavigationBarView extends LinearLayout {
|
||||
public NavigationBarView(Context context, AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package org.anbox;
|
||||
|
||||
import android.app.Service;
|
||||
import android.content.Intent;
|
||||
import android.os.IBinder;
|
||||
import android.service.notification.NotificationListenerService;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
import android.util.Log;
|
||||
|
||||
public class NotificationListener extends NotificationListenerService {
|
||||
public NotificationListener() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public IBinder onBind(Intent intent) {
|
||||
return super.onBind(intent);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onListenerConnected() {
|
||||
super.onListenerConnected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNotificationPosted(StatusBarNotification sbn) {
|
||||
Log.e("ShashlikController", "new notification");
|
||||
}
|
||||
}
|
||||
BIN
android/res/drawable-xhdpi/bg_protect.9.png
Normal file
|
After Width: | Height: | Size: 255 B |
BIN
android/res/drawable-xhdpi/bottom_divider_glow.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
android/res/drawable-xhdpi/ic_camera_alt_24dp.png
Normal file
|
After Width: | Height: | Size: 486 B |
BIN
android/res/drawable-xhdpi/ic_lockscreen_glowdot.png
Normal file
|
After Width: | Height: | Size: 964 B |
BIN
android/res/drawable-xhdpi/ic_menu_share.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
android/res/drawable-xhdpi/ic_notification_overlay.9.png
Normal file
|
After Width: | Height: | Size: 1,006 B |
BIN
android/res/drawable-xhdpi/ic_phone_24dp.png
Normal file
|
After Width: | Height: | Size: 530 B |
BIN
android/res/drawable-xhdpi/ic_qs_alarm_on.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
android/res/drawable-xhdpi/ic_qs_brightness_auto_off_alpha.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
android/res/drawable-xhdpi/ic_qs_brightness_auto_on_alpha.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
android/res/drawable-xhdpi/ic_qs_certificate_info.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
android/res/drawable-xhdpi/ic_qs_ime.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
android/res/drawable-xhdpi/ic_qs_settings.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
android/res/drawable-xhdpi/ic_qs_usb_device.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_back.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_back_ime.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_back_land.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_home.png
Normal file
|
After Width: | Height: | Size: 2.6 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_home_land.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_lights_out_dot_large.png
Normal file
|
After Width: | Height: | Size: 234 B |
BIN
android/res/drawable-xhdpi/ic_sysbar_lights_out_dot_small.png
Normal file
|
After Width: | Height: | Size: 289 B |
BIN
android/res/drawable-xhdpi/ic_sysbar_menu.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_menu_land.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
android/res/drawable-xhdpi/ic_sysbar_recent.png
Normal file
|
After Width: | Height: | Size: 733 B |
BIN
android/res/drawable-xhdpi/ic_sysbar_recent_land.png
Normal file
|
After Width: | Height: | Size: 895 B |
BIN
android/res/drawable-xhdpi/nav_background.9.png
Normal file
|
After Width: | Height: | Size: 199 B |
BIN
android/res/drawable-xhdpi/notification_panel_bg.9.png
Normal file
|
After Width: | Height: | Size: 157 B |
BIN
android/res/drawable-xhdpi/recents_lower_gradient.9.png
Normal file
|
After Width: | Height: | Size: 220 B |
BIN
android/res/drawable-xhdpi/recents_status_gradient.9.png
Normal file
|
After Width: | Height: | Size: 186 B |
BIN
android/res/drawable-xhdpi/recents_thumbnail_bg.9.png
Normal file
|
After Width: | Height: | Size: 636 B |
BIN
android/res/drawable-xhdpi/recents_thumbnail_bg_normal.9.png
Normal file
|
After Width: | Height: | Size: 620 B |
BIN
android/res/drawable-xhdpi/recents_thumbnail_bg_press.9.png
Normal file
|
After Width: | Height: | Size: 406 B |
BIN
android/res/drawable-xhdpi/screenshot_panel.9.png
Normal file
|
After Width: | Height: | Size: 804 B |
BIN
android/res/drawable-xhdpi/search_bg_transparent.9.png
Normal file
|
After Width: | Height: | Size: 866 B |
|
After Width: | Height: | Size: 404 B |
BIN
android/res/drawable-xhdpi/stat_notify_image.png
Normal file
|
After Width: | Height: | Size: 981 B |
BIN
android/res/drawable-xhdpi/stat_notify_image_error.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
android/res/drawable-xhdpi/stat_sys_roaming_cdma_0.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
android/res/drawable-xhdpi/stat_sys_sync.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
android/res/drawable-xhdpi/stat_sys_tty_mode.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
android/res/drawable-xhdpi/status_background.9.png
Normal file
|
After Width: | Height: | Size: 177 B |
BIN
android/res/drawable-xhdpi/status_bar_close_off.9.png
Normal file
|
After Width: | Height: | Size: 460 B |
BIN
android/res/drawable-xhdpi/status_bar_close_on.9.png
Normal file
|
After Width: | Height: | Size: 523 B |
BIN
android/res/drawable-xhdpi/top_divider_glow.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
android/res/drawable/drawable-hdpi/bg_protect.9.png
Normal file
|
After Width: | Height: | Size: 226 B |
BIN
android/res/drawable/drawable-hdpi/bottom_divider_glow.png
Normal file
|
After Width: | Height: | Size: 1,016 B |
BIN
android/res/drawable/drawable-hdpi/ic_camera_alt_24dp.png
Normal file
|
After Width: | Height: | Size: 407 B |
BIN
android/res/drawable/drawable-hdpi/ic_lockscreen_glowdot.png
Normal file
|
After Width: | Height: | Size: 738 B |
BIN
android/res/drawable/drawable-hdpi/ic_menu_share.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_notification_overlay.9.png
Normal file
|
After Width: | Height: | Size: 749 B |
BIN
android/res/drawable/drawable-hdpi/ic_phone_24dp.png
Normal file
|
After Width: | Height: | Size: 444 B |
BIN
android/res/drawable/drawable-hdpi/ic_qs_alarm_on.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_qs_certificate_info.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_qs_ime.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_qs_settings.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_qs_usb_device.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_sysbar_back.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_sysbar_back_ime.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_sysbar_back_land.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_sysbar_home.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
android/res/drawable/drawable-hdpi/ic_sysbar_home_land.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |