From 23b04a86afc0865200605c241b90af41f95032db Mon Sep 17 00:00:00 2001 From: JLChen <551775569@qq.com> Date: 星期四, 17 六月 2021 12:44:28 +0800 Subject: [PATCH] 2021-6-17 12:43:49 --- PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/layout/activity_main.xml | 698 ++++++++++++++++++ PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 PX30SmatekAPI/PX30SmatekAPI/app/libs/px30_smatek.jar | 0 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable-v24/ic_launcher_foreground.xml | 34 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/strings.xml | 3 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/colors.xml | 6 PX30SmatekAPI/PX30SmatekAPI/.idea/runConfigurations.xml | 12 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher_round.png | 0 PX30SmatekAPI/PX30SmatekAPI/gradlew | 172 ++++ PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png | 0 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png | 0 PX30SmatekAPI/PX30SmatekAPI/app/src/main/AndroidManifest.xml | 21 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable/ic_launcher_background.xml | 170 ++++ PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/styles.xml | 11 PX30SmatekAPI/PX30SmatekAPI/build.gradle | 27 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher.png | 0 PX30SmatekAPI/PX30SmatekAPI/settings.gradle | 2 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml | 5 PX30SmatekAPI/PX30SmatekAPI/app/proguard-rules.pro | 21 PX30SmatekAPI/PX30SmatekAPI/app/src/androidTest/java/com/smatek/px30smatekapi/ExampleInstrumentedTest.java | 26 PX30SmatekAPI/PX30SmatekAPI/app/src/test/java/com/smatek/px30smatekapi/ExampleUnitTest.java | 17 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher_round.png | 0 PX30SmatekAPI/PX30SmatekAPI/gradlew.bat | 84 ++ PX30SmatekAPI/PX30SmatekAPI/.idea/misc.xml | 9 PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/MainActivity.java | 587 +++++++++++++++ PX30SmatekAPI/PX30SmatekAPI/app/.gitignore | 1 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png | 0 PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.jar | 0 PX30SmatekAPI/PX30SmatekAPI/.idea/codeStyles/Project.xml | 116 +++ PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/utils/EthernetUtils.java | 63 + PX30SmatekAPI/PX30SmatekAPI/app/build.gradle | 29 PX30SmatekAPI/PX30SmatekAPI/.idea/gradle.xml | 16 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher.png | 0 PX30SmatekAPI/PX30SmatekAPI/gradle.properties | 15 PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.properties | 6 PX30SmatekAPI/PX30SmatekAPI/.gitignore | 14 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher.png | 0 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png | 0 PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher.png | 0 39 files changed, 2,170 insertions(+), 0 deletions(-) diff --git a/PX30SmatekAPI/PX30SmatekAPI/.gitignore b/PX30SmatekAPI/PX30SmatekAPI/.gitignore new file mode 100644 index 0000000..603b140 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/.gitignore @@ -0,0 +1,14 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx diff --git a/PX30SmatekAPI/PX30SmatekAPI/.idea/codeStyles/Project.xml b/PX30SmatekAPI/PX30SmatekAPI/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..681f41a --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/.idea/codeStyles/Project.xml @@ -0,0 +1,116 @@ +<component name="ProjectCodeStyleConfiguration"> + <code_scheme name="Project" version="173"> + <codeStyleSettings language="XML"> + <indentOptions> + <option name="CONTINUATION_INDENT_SIZE" value="4" /> + </indentOptions> + <arrangement> + <rules> + <section> + <rule> + <match> + <AND> + <NAME>xmlns:android</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>xmlns:.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*:id</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*:name</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>name</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>style</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>^$</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> + </AND> + </match> + <order>ANDROID_ATTRIBUTE_ORDER</order> + </rule> + </section> + <section> + <rule> + <match> + <AND> + <NAME>.*</NAME> + <XML_ATTRIBUTE /> + <XML_NAMESPACE>.*</XML_NAMESPACE> + </AND> + </match> + <order>BY_NAME</order> + </rule> + </section> + </rules> + </arrangement> + </codeStyleSettings> + </code_scheme> +</component> \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/.idea/gradle.xml b/PX30SmatekAPI/PX30SmatekAPI/.idea/gradle.xml new file mode 100644 index 0000000..d291b3d --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/.idea/gradle.xml @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="GradleSettings"> + <option name="linkedExternalProjectsSettings"> + <GradleProjectSettings> + <compositeConfiguration> + <compositeBuild compositeDefinitionSource="SCRIPT" /> + </compositeConfiguration> + <option name="distributionType" value="DEFAULT_WRAPPED" /> + <option name="externalProjectPath" value="$PROJECT_DIR$" /> + <option name="resolveModulePerSourceSet" value="false" /> + <option name="testRunner" value="PLATFORM" /> + </GradleProjectSettings> + </option> + </component> +</project> \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/.idea/misc.xml b/PX30SmatekAPI/PX30SmatekAPI/.idea/misc.xml new file mode 100644 index 0000000..dfd2c79 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/.idea/misc.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="JDK" project-jdk-type="JavaSDK"> + <output url="file://$PROJECT_DIR$/build/classes" /> + </component> + <component name="ProjectType"> + <option name="id" value="Android" /> + </component> +</project> \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/.idea/runConfigurations.xml b/PX30SmatekAPI/PX30SmatekAPI/.idea/runConfigurations.xml new file mode 100644 index 0000000..7f68460 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="RunConfigurationProducerService"> + <option name="ignoredProducers"> + <set> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" /> + <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" /> + </set> + </option> + </component> +</project> \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/.gitignore b/PX30SmatekAPI/PX30SmatekAPI/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/build.gradle b/PX30SmatekAPI/PX30SmatekAPI/app/build.gradle new file mode 100644 index 0000000..301ae9a --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/build.gradle @@ -0,0 +1,29 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "com.smatek.px30smatekapi" + minSdkVersion 15 + targetSdkVersion 28 + versionCode 1 + versionName "1.0" + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'com.android.support:appcompat-v7:28.0.0' + implementation 'com.android.support.constraint:constraint-layout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'com.android.support.test:runner:1.0.2' + androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation files('libs/px30_smatek.jar') +} diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/libs/px30_smatek.jar b/PX30SmatekAPI/PX30SmatekAPI/app/libs/px30_smatek.jar new file mode 100644 index 0000000..4584098 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/libs/px30_smatek.jar Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/proguard-rules.pro b/PX30SmatekAPI/PX30SmatekAPI/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/androidTest/java/com/smatek/px30smatekapi/ExampleInstrumentedTest.java b/PX30SmatekAPI/PX30SmatekAPI/app/src/androidTest/java/com/smatek/px30smatekapi/ExampleInstrumentedTest.java new file mode 100644 index 0000000..06a0dee --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/androidTest/java/com/smatek/px30smatekapi/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.smatek.px30smatekapi; + +import android.content.Context; +import android.support.test.InstrumentationRegistry; +import android.support.test.runner.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + + assertEquals("com.smatek.px30smatekapi", appContext.getPackageName()); + } +} diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/AndroidManifest.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..6e3e070 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/AndroidManifest.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="com.smatek.px30smatekapi"> + + <application + android:allowBackup="true" + android:icon="@mipmap/ic_launcher" + android:label="@string/app_name" + android:roundIcon="@mipmap/ic_launcher_round" + android:supportsRtl="true" + android:theme="@style/AppTheme"> + <activity android:name=".MainActivity"> + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + </application> + +</manifest> \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/MainActivity.java b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/MainActivity.java new file mode 100644 index 0000000..15a582f --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/MainActivity.java @@ -0,0 +1,587 @@ +package com.smatek.px30smatekapi; + +import android.app.ISmatekListener; +import android.app.SmatekManager; +import android.content.Context; +import android.content.Intent; +import android.media.AudioManager; +import android.os.Build; +import android.os.SystemClock; +import android.provider.Settings; +import android.support.annotation.RequiresApi; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.text.TextUtils; +import android.util.Log; +import android.view.InputDevice; +import android.view.KeyEvent; +import android.view.MotionEvent; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.SeekBar; +import android.widget.TextView; +import android.widget.Toast; + +import com.smatek.px30smatekapi.utils.EthernetUtils; + +import java.lang.reflect.Method; + + +public class MainActivity extends AppCompatActivity implements View.OnClickListener, SeekBar.OnSeekBarChangeListener { + + private Button btnApiVersion, btnDeviceModel, btnOsVersion, + btnRunningMemory, btnInnerStorage, btnFreeStorage, + btnKernelVersion, btnBuilderNumber, + btnShutDown, btnReboot, btnScreenshot, btnBrightness, + btnRotation, btnHeight, btnWidth, btnOpenBackLight, + btnCloseBackLight, btnStatusBarShow, btnStatusBarHide, + btnEthMacAddress, btnEthIpAddress, btnScardPath, btnUsbPath, + btnInner, btnInstall, + btnSysTime, btnSysDate, btn24, btn12, btnEthernetConnect, + btnSubmitStaticIp, btnSleep, btnScreen, btnScreenOpen, btnMasterClear, btnFilterPermission, + btnOta, btnKeyInput, btnCpuGovernor, btnFrequencies, btnCurrentFreq, btnCpuControl, btnDramCurrentFreq, + btnDramGovernor, btnWriteGpio, btnReadGpio, btnNetmask, btnGateway, btnDns, btnDisconnectEth, btnConnectEth, btnWwitchDhcp; + // btnWatchDogOpen, btnWatchDogClose, + private SeekBar sbVolume; + private TextView tvContent; + private EditText editIpAddress, editGateway, editNetmask, editDns1, editDns2, editBrightness, + editRotation, editGovernor, editFrequencies, editCpuNode, editCpuNodeValue, editDramGovernor, editGpioInput, editGpioInputValue; + + + private SmatekManager smatekManager; + private static String TAG = "MainActivity"; + private MyISmatekListener myISmatekListener; + + + @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2) + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + initView(); + smatekManager = (SmatekManager) getSystemService("smatek"); + myISmatekListener = new MyISmatekListener(); + smatekManager.addSmatekListener(myISmatekListener); + + } + + + private void initView() { + tvContent = findViewById(R.id.tv_content); + btnApiVersion = findViewById(R.id.btn_api_version); + btnDeviceModel = findViewById(R.id.btn_device_model); + btnOsVersion = findViewById(R.id.btn_os_version); + btnRunningMemory = findViewById(R.id.btn_running_memory); + btnInnerStorage = findViewById(R.id.btn_inner_storage); + btnFreeStorage = findViewById(R.id.btn_free_storage); + btnKernelVersion = findViewById(R.id.btn_kernel_version); + btnBuilderNumber = findViewById(R.id.btn_builder_number); + btnShutDown = findViewById(R.id.btn_shut_down); + btnReboot = findViewById(R.id.btn_reboot); + btnScreenshot = findViewById(R.id.btn_screenshot); + btnBrightness = findViewById(R.id.btn_brightness); + btnRotation = findViewById(R.id.btn_rotation); + btnHeight = findViewById(R.id.btn_height); + btnWidth = findViewById(R.id.btn_width); + btnOpenBackLight = findViewById(R.id.btn_open_back_light); + btnCloseBackLight = findViewById(R.id.btn_close_back_light); + btnStatusBarShow = findViewById(R.id.btn_statusBar_show); + btnStatusBarHide = findViewById(R.id.btn_statusBar_hide); + btnEthMacAddress = findViewById(R.id.btn_eth_mac_address); + btnEthIpAddress = findViewById(R.id.btn_eth_ip_address); + btnScardPath = findViewById(R.id.btn_sdcard); + btnUsbPath = findViewById(R.id.btn_usb); + btnInner = findViewById(R.id.btn_inner); + btnInstall = findViewById(R.id.btn_install); +// btnWatchDogOpen = findViewById(R.id.btn_watch_dog_open); +// btnWatchDogClose = findViewById(R.id.btn_watch_dog_close); + btnSysTime = findViewById(R.id.btn_sys_time); + btnSysDate = findViewById(R.id.btn_sys_date); + btn24 = findViewById(R.id.btn_24); + btn12 = findViewById(R.id.btn_12); + btnEthernetConnect = findViewById(R.id.btn_ethernet_connect); + editRotation = findViewById(R.id.edit_rotation); + + sbVolume = findViewById(R.id.sb_volume); + sbVolume.setOnSeekBarChangeListener(this); + + editIpAddress = findViewById(R.id.edit_ip_address); + editGateway = findViewById(R.id.edit_gateway);//缃戝叧 + editNetmask = findViewById(R.id.edit_netmask);//鎺╃爜 + editDns1 = findViewById(R.id.edit_dns1); + editDns2 = findViewById(R.id.edit_dns2); + btnSubmitStaticIp = findViewById(R.id.btn_submit_static_ip); + + btnSleep = findViewById(R.id.btn_sleep); + btnScreen = findViewById(R.id.btn_screen); + btnScreenOpen = findViewById(R.id.btn_screen_open); + editBrightness = findViewById(R.id.edit_brightness); + btnMasterClear = findViewById(R.id.btn_master_clear); + btnFilterPermission = findViewById(R.id.btn_filter_permission); + btnOta = findViewById(R.id.btn_ota); + btnKeyInput = findViewById(R.id.btn_key_input); + editGovernor = findViewById(R.id.edit_cpu_governor); + editFrequencies = findViewById(R.id.edit_cpu_frequencies); + btnCpuGovernor = findViewById(R.id.btn_cpu_governor); + btnFrequencies = findViewById(R.id.btn_cpu_frequencies); + btnCurrentFreq = findViewById(R.id.btn_current_freq); + editCpuNode = findViewById(R.id.edit_cpu_node); + editCpuNodeValue = findViewById(R.id.edit_cpu_node_value); + btnCpuControl = findViewById(R.id.btn_cpu_control); + btnDramCurrentFreq = findViewById(R.id.btn_dram_current_freq); + editDramGovernor = findViewById(R.id.edit_dram_governor); + btnDramGovernor = findViewById(R.id.btn_dram_governor); + editGpioInput = findViewById(R.id.edit_gpio_input); + btnWriteGpio = findViewById(R.id.btn_write_gpio); + btnReadGpio = findViewById(R.id.btn_read_gpio); + editGpioInputValue = findViewById(R.id.edit_gpio_input_value); + + btnNetmask = findViewById(R.id.btn_netmask); + btnGateway = findViewById(R.id.btn_gateway); + btnDns = findViewById(R.id.btn_dns); + btnDisconnectEth = findViewById(R.id.btn_disconnect_eth); + btnConnectEth = findViewById(R.id.btn_connect_eth); + btnWwitchDhcp = findViewById(R.id.btn_switch_dhcp); + + + btnApiVersion.setOnClickListener(this); + btnDeviceModel.setOnClickListener(this); + btnOsVersion.setOnClickListener(this); + btnRunningMemory.setOnClickListener(this); + btnInnerStorage.setOnClickListener(this); + btnFreeStorage.setOnClickListener(this); + btnKernelVersion.setOnClickListener(this); + btnBuilderNumber.setOnClickListener(this); + btnShutDown.setOnClickListener(this); + btnReboot.setOnClickListener(this); + btnScreenshot.setOnClickListener(this); + btnBrightness.setOnClickListener(this); + btnRotation.setOnClickListener(this); + btnHeight.setOnClickListener(this); + btnWidth.setOnClickListener(this); + btnOpenBackLight.setOnClickListener(this); + btnCloseBackLight.setOnClickListener(this); + btnStatusBarShow.setOnClickListener(this); + btnStatusBarHide.setOnClickListener(this); + btnEthMacAddress.setOnClickListener(this); + btnEthIpAddress.setOnClickListener(this); + btnScardPath.setOnClickListener(this); + btnUsbPath.setOnClickListener(this); + btnInner.setOnClickListener(this); + btnInstall.setOnClickListener(this); +// btnWatchDogOpen.setOnClickListener(this); +// btnWatchDogClose.setOnClickListener(this); + + btnSysTime.setOnClickListener(this); + btnSysDate.setOnClickListener(this); + btn24.setOnClickListener(this); + btn12.setOnClickListener(this); + btnEthernetConnect.setOnClickListener(this); + btnSubmitStaticIp.setOnClickListener(this); + btnSleep.setOnClickListener(this); + btnScreen.setOnClickListener(this); + btnScreenOpen.setOnClickListener(this); + btnMasterClear.setOnClickListener(this); + btnFilterPermission.setOnClickListener(this); + btnOta.setOnClickListener(this); + btnKeyInput.setOnClickListener(this); + btnCpuGovernor.setOnClickListener(this); + btnFrequencies.setOnClickListener(this); + btnCurrentFreq.setOnClickListener(this); + btnCpuControl.setOnClickListener(this); + btnDramCurrentFreq.setOnClickListener(this); + btnDramGovernor.setOnClickListener(this); + + btnReadGpio.setOnClickListener(this); + btnWriteGpio.setOnClickListener(this); + + btnNetmask.setOnClickListener(this); + btnGateway.setOnClickListener(this); + btnDns.setOnClickListener(this); + btnDisconnectEth.setOnClickListener(this); + btnConnectEth.setOnClickListener(this); + btnWwitchDhcp.setOnClickListener(this); + + + } + + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.btn_api_version: + String apiVersion = smatekManager.getAPIVersion(); + Log.e(TAG, "apiVersion :" + apiVersion); + tvContent.setText(apiVersion); + Toast.makeText(this, "aip鐗堟湰 :" + apiVersion, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_device_model: + String deviceModel = smatekManager.getDeviceModel(); + Log.e(TAG, "deviceModel :" + deviceModel); + tvContent.setText(deviceModel); + Toast.makeText(this, "璁惧model :" + deviceModel, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_os_version: + String androidOSVersion = smatekManager.getAndroidOSVersion(); + Log.e(TAG, "androidOSVersion :" + androidOSVersion); + tvContent.setText(androidOSVersion); + Toast.makeText(this, "绯荤粺鐗堟湰 :" + androidOSVersion, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_running_memory: + String runningMemory = smatekManager.getRunningMemory(); + Log.e(TAG, "runningMemory :" + runningMemory); + tvContent.setText(runningMemory); + Toast.makeText(this, "杩愯鍐呭瓨 :" + runningMemory, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_inner_storage: + String internalStorageMemory = smatekManager.getInternalStorageMemory(); + Log.e(TAG, "internalStorageMemory :" + internalStorageMemory); + tvContent.setText(internalStorageMemory); + Toast.makeText(this, "鍐呴儴瀛樺偍璺緞 :" + internalStorageMemory, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_free_storage: + String internalFreeStorageMemory = smatekManager.getInternalFreeStorageMemory(); + Log.e(TAG, "internalFreeStorageMemory :" + internalFreeStorageMemory); + tvContent.setText(internalFreeStorageMemory); + Toast.makeText(this, "鍐呴儴瀛樺偍鍙敤瀹归噺 :" + internalFreeStorageMemory, Toast.LENGTH_SHORT).show(); + + break; + case R.id.btn_kernel_version: + String kernelVersion = smatekManager.getKernelVersion(); + Log.e(TAG, "kernelVersion :" + kernelVersion); + tvContent.setText(kernelVersion); + Toast.makeText(this, "kernel鐗堟湰淇℃伅 :" + kernelVersion, Toast.LENGTH_SHORT).show(); + + break; + case R.id.btn_builder_number: + String builderNumberDisplay = smatekManager.getBuilderNumberDisplay(); + Log.e(TAG, "builderNumberDisplay :" + builderNumberDisplay); + tvContent.setText(builderNumberDisplay); + Toast.makeText(this, "DisplayId :" + builderNumberDisplay, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_shut_down: + smatekManager.shutdown(); + break; + case R.id.btn_reboot: + smatekManager.reboot(); + break; + case R.id.btn_screenshot: + smatekManager.screenshots("/storage/emulated/0/", "test##.png"); + break; + case R.id.btn_brightness: + String trim = editBrightness.getText().toString().trim(); + if (!TextUtils.isEmpty(trim)) { + smatekManager.setBrightness(Integer.parseInt(trim)); + } else { + Toast.makeText(MainActivity.this, "鎯呰緭鍏ヤ寒搴﹀��", Toast.LENGTH_LONG).show(); + } + break; + case R.id.btn_rotation: + String rotation = editRotation.getText().toString().trim(); + smatekManager.setRotation(rotation); + break; + case R.id.btn_height: + int screenHeight = smatekManager.getScreenHeight(this); + Log.e(TAG, "screenHeight :" + screenHeight); + tvContent.setText(screenHeight + ""); + Toast.makeText(this, "楂� :" + screenHeight, Toast.LENGTH_SHORT).show(); + + break; + case R.id.btn_width: + int screenWidth = smatekManager.getScreenWidth(this); + Log.e(TAG, "screenWidth :" + screenWidth); + tvContent.setText(screenWidth + ""); + Toast.makeText(this, "瀹� :" + screenWidth, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_open_back_light: + smatekManager.setLcdBlackLight(true); + break; + case R.id.btn_close_back_light: + smatekManager.setLcdBlackLight(false); + break; + case R.id.btn_statusBar_show: + Intent intent = new Intent(); + intent.setAction("com.smatek.show.navigationbar"); + intent.putExtra("show_navigationbar", true);//auto true 涓烘樉绀� 锛宖alse 涓� 闅愯棌 + sendBroadcast(intent); + + break; + case R.id.btn_statusBar_hide: + Intent intent1 = new Intent(); + intent1.setAction("com.smatek.show.navigationbar"); + intent1.putExtra("show_navigationbar", false);//auto true 涓烘樉绀� 锛宖alse 涓� 闅愯棌 + sendBroadcast(intent1); + break; + case R.id.btn_eth_mac_address: + String ethMacAddress = smatekManager.getEthMacAddress(); + Log.e(TAG, "ethMacAddress :" + ethMacAddress); + tvContent.setText(ethMacAddress); + Toast.makeText(this, "Mac 鍦板潃 :" + ethMacAddress, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_eth_ip_address: + String ethIPAddress = smatekManager.getEthIPAddress(); + Log.e(TAG, "ethIPAddress :" + ethIPAddress); + tvContent.setText(ethIPAddress); + Toast.makeText(this, "浠ュお缃慽p鍦板潃 :" + ethIPAddress, Toast.LENGTH_SHORT).show(); + + break; + + case R.id.btn_inner: + String primaryStoragePath = smatekManager.getPrimaryStoragePath(); + Log.e(TAG, "primaryStoragePath :" + primaryStoragePath); + tvContent.setText(primaryStoragePath); + Toast.makeText(this, "鍐呴儴瀛樺偍璺緞 :" + primaryStoragePath, Toast.LENGTH_SHORT).show(); + break; + case R.id.btn_sdcard: + String sdcardPath = smatekManager.getSdcardPath(); + Log.e(TAG, "sdcardPath :" + sdcardPath); + tvContent.setText(sdcardPath); + Toast.makeText(this, "sdcard璺緞 :" + sdcardPath, Toast.LENGTH_SHORT).show(); + + break; + case R.id.btn_usb: + String usbPath = smatekManager.getUSBPath(); + Log.e(TAG, "usbPath :" + usbPath); + tvContent.setText(usbPath); + Toast.makeText(this, "usb 璺緞 :" + usbPath, Toast.LENGTH_SHORT).show(); + + break; + case R.id.btn_install: + Intent intent3 = new Intent(); + intent3.setAction("com.smatek.silentInstall"); + intent3.putExtra("com.smatek.silentInstall.path", "/storage/emulated/0/GPS_Test.apk"); + intent3.putExtra("com.smatek.silentInstall.packageName", "com.chartcross.gpstest"); + sendBroadcast(intent3); + + break; + case R.id.btn_sys_time: + smatekManager.setSystemTime(16, 5); + break; + case R.id.btn_sys_date: + smatekManager.setSystemDate(2019, 11, 5); + break; + case R.id.btn_24: + smatekManager.setDateTime24hour(true); + break; + case R.id.btn_12: + smatekManager.setDateTime24hour(false); + break; + case R.id.btn_ethernet_connect: + int ethernetLinkStatus = smatekManager.getEthernetLinkStatus(); + Log.e(TAG, "ethernetLinkStatus :" + ethernetLinkStatus); + Toast.makeText(this, "浠ュお缃戦摼鎺ョ姸鎬� :" + ethernetLinkStatus, Toast.LENGTH_SHORT).show(); + + break; + case R.id.btn_submit_static_ip: + //璁剧疆闈欐�乮p + String ipAddress = editIpAddress.getText().toString().trim(); + String gateway = editGateway.getText().toString().trim(); + String netmask = editNetmask.getText().toString().trim(); + String dns1 = editDns1.getText().toString().trim(); + String dns2 = editDns2.getText().toString().trim(); + + EthernetUtils ethernetUtils = new EthernetUtils(); + boolean b = ethernetUtils.checkIPValue(ipAddress, gateway, netmask, dns1, dns2); + if (b) { + smatekManager.setStaticIp(ipAddress, netmask, gateway, dns1, dns2); + } + break; + case R.id.btn_sleep: + smatekManager.goToSleep(); + + break; + case R.id.btn_screen: + smatekManager.openOrCloseScreen(true); + break; + case R.id.btn_screen_open: + smatekManager.openOrCloseScreen(false); + break; + case R.id.btn_master_clear: + smatekManager.eraseAllData(); + break; + case R.id.btn_filter_permission: + smatekManager.setFilterPermissionPackageName("com.smatek.px30smatekapi"); + + Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0); + + break; + case R.id.btn_ota: + Intent intent2 = new Intent(); + intent2.setAction("com.smatek.ota.download.complete"); + intent2.putExtra("com.smatek.ota.download.path", "/storage/emulated/0/px30_evb-ota-115442.zip"); + sendBroadcast(intent2); + break; + + case R.id.btn_key_input: + // 妯℃嫙閿�艰緭鍏� + long now = SystemClock.uptimeMillis(); + KeyEvent down = new KeyEvent(now, now, KeyEvent.ACTION_DOWN, 25, 0); + KeyEvent up = new KeyEvent(now, now, KeyEvent.ACTION_UP, 25, 0); + smatekManager.injectInputEvent(down); + smatekManager.injectInputEvent(up); + +// //妯℃嫙瑙︽懜鐐硅Е鎽� +// MotionEvent event = MotionEvent.obtain(now, now, MotionEvent.ACTION_DOWN, 960, 540, 0); +// MotionEvent event1 = MotionEvent.obtain(now, now, MotionEvent.ACTION_UP, 960, 540, 0); +// if ((event.getSource() & InputDevice.SOURCE_CLASS_POINTER) == 0) { +// event.setSource(InputDevice.SOURCE_TOUCHSCREEN); +// } +// +// if ((event1.getSource() & InputDevice.SOURCE_CLASS_POINTER) == 0) { +// event1.setSource(InputDevice.SOURCE_TOUCHSCREEN); +// } +// smatekManager.injectInputEvent(event); +// smatekManager.injectInputEvent(event1); + break; + case R.id.btn_current_freq: + String currentFreq = smatekManager.getDataFromNode("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq"); + Log.e(TAG, "currentFreq :" + currentFreq); + Toast.makeText(this, "cpu褰撳墠棰戠巼 :" + currentFreq, Toast.LENGTH_SHORT).show(); + + break; + + case R.id.btn_cpu_governor: + String cpuGovernor = editGovernor.getText().toString().trim(); + Log.e(TAG, cpuGovernor); + if (cpuGovernor != null) { + smatekManager.writeToNode("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", cpuGovernor); + } + + break; + case R.id.btn_cpu_frequencies: + String dataFromNode = smatekManager.getDataFromNode("/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies"); + String[] spit = dataFromNode.trim().split(" "); + // 126000, 216000, 408000, 600000, 696000, 816000, 1008000, 1200000, 1416000, 1512000, 1608000 + smatekManager.writeToNode("/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor", "userspace"); // 棣栧厛灏哻pu绛栫暐璁剧疆涓簎serspace妯″紡 + smatekManager.writeToNode("/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed", spit[0]); //璁剧疆棰戠巼,spit[0] 鏄彲鐢ㄩ鐜囦腑鐨勪竴涓� + + break; + case R.id.btn_cpu_control: + String cpuNode = editCpuNode.getText().toString().trim(); + String nodeValue = editCpuNodeValue.getText().toString().trim(); + if (cpuNode != null && nodeValue != null) { + smatekManager.writeToNode(cpuNode, nodeValue); + } + break; + case R.id.btn_dram_current_freq: + String dramFreq = smatekManager.getDataFromNode("/sys/devices/platform/dmc/devfreq/dmc/cur_freq"); + Log.e(TAG, "dramFreq :" + dramFreq); + Toast.makeText(this, "dram 褰撳墠棰戠巼 :" + dramFreq, Toast.LENGTH_SHORT).show(); + + break; + + case R.id.btn_dram_governor: + String dramGovernor = editDramGovernor.getText().toString().trim(); + if (dramGovernor != null) { + smatekManager.writeToNode("/sys/class/devfreq/dmc/governor", dramGovernor);// dramGovernor鍙紶鍏� dmc_ondemand銆乽serspace銆乸owersave銆乸erformance銆乻imple_ondemand + } + + break; + case R.id.btn_write_gpio: + String gpio = editGpioInput.getText().toString().trim(); + String gpioValue = editGpioInputValue.getText().toString().trim(); + if (!TextUtils.isEmpty(gpio)) { + smatekManager.writeToNode(gpio, gpioValue); + } else { + Toast.makeText(this, "璇疯緭鍏ヨ妭鐐�", Toast.LENGTH_LONG).show(); + } + + break; + + case R.id.btn_read_gpio: + String gpiotest = editGpioInput.getText().toString().trim(); + if (!TextUtils.isEmpty(gpiotest)) { + String dataFromNode1 = smatekManager.getDataFromNode(gpiotest); + Toast.makeText(this, "褰撳墠鐨勮妭鐐瑰�硷細" + dataFromNode1, Toast.LENGTH_LONG).show(); + + } else { + Toast.makeText(this, "璇疯緭鍏ヨ妭鐐�", Toast.LENGTH_LONG).show(); + } + + break; + + case R.id.btn_netmask: //瀛愮綉鎺╃爜 + String netmask1 = smatekManager.getNetmask(); + Toast.makeText(this, "瀛愮綉鎺╃爜锛�" + netmask1, Toast.LENGTH_LONG).show(); + break; + + case R.id.btn_gateway: //缃戝叧 + String gateway1 = smatekManager.getGateway(); + Toast.makeText(this, "缃戝叧锛�" + gateway1, Toast.LENGTH_LONG).show(); + break; + + case R.id.btn_dns://dns + String dns = smatekManager.getDns(); + Toast.makeText(this, "dns锛�" + dns, Toast.LENGTH_LONG).show(); + break; + + case R.id.btn_disconnect_eth: //鏂紑浠ュお缃� + smatekManager.disconnectEth("eth0"); + break; + + case R.id.btn_connect_eth: //閾炬帴浠ュお缃� + smatekManager.connectEth("eth0"); + break; + + case R.id.btn_switch_dhcp: //鍒囨崲鍔ㄦ�乮p + smatekManager.switchDHCP(); + break; + + } + + } + + + @Override + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + if (fromUser) { + switch (seekBar.getId()) { + case R.id.sb_volume: +// smatekManager.setSystemVolume(progress); + AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + int streamMaxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC); + int i = (progress * streamMaxVolume / 100); + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, i, AudioManager.FLAG_PLAY_SOUND); + + break; + } + } + + } + + @Override + public void onStartTrackingTouch(SeekBar seekBar) { + + } + + @Override + public void onStopTrackingTouch(SeekBar seekBar) { + + } + + + private class MyISmatekListener implements ISmatekListener { + + + @Override + public void onKeyEvent(int i, int i1) { + Log.e(TAG, " i :" + i + " i1 :" + i1); + } + + @Override + public void ethernetLinkState(int i) { + Log.e(TAG, "ethernetLinkState i :" + i); + } + } + + + @Override + protected void onDestroy() { + super.onDestroy(); + if (myISmatekListener != null) { + smatekManager.removeSmatekListener(myISmatekListener); + } + + } +} diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/utils/EthernetUtils.java b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/utils/EthernetUtils.java new file mode 100644 index 0000000..6b751b7 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/java/com/smatek/px30smatekapi/utils/EthernetUtils.java @@ -0,0 +1,63 @@ +package com.smatek.px30smatekapi.utils; + +import android.text.TextUtils; +import android.util.Log; + +import java.util.regex.Pattern; + +public class EthernetUtils { + + public boolean checkIPValue(String ipAddr, String gateway, String netMask, String dns1, String dns2) { + boolean enable = false; + Pattern pattern = Pattern.compile("(^((\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])\\.){3}(\\d|[01]?\\d\\d|2[0-4]\\d|25[0-5])$)|^(\\d|[1-2]\\d|3[0-2])$"); /*check subnet mask*/ + if (isValidIpAddress(ipAddr) && isValidIpAddress(gateway) + && isValidIpAddress(dns1) && (pattern.matcher(netMask).matches())) { + if (TextUtils.isEmpty(dns2)) { // 涓虹┖鍙互涓嶈�冭檻 + enable = true; + } else { + if (isValidIpAddress(dns2)) { + enable = true; + } else { + enable = false; + } + } + } else { + enable = false; + } + return enable; + } + + + private boolean isValidIpAddress(String value) { + int start = 0; + int end = value.indexOf('.'); + int numBlocks = 0; + + while (start < value.length()) { + + if (-1 == end) { + end = value.length(); + } + + try { + int block = Integer.parseInt(value.substring(start, end)); + if ((block > 255) || (block < 0)) { + Log.w("EthernetIP", + "isValidIpAddress() : invalid 'block', block = " + + block); + return false; + } + } catch (NumberFormatException e) { + Log.w("EthernetIP", "isValidIpAddress() : e = " + e); + return false; + } + + numBlocks++; + + start = end + 1; + end = value.indexOf('.', start); + } + return numBlocks == 4; + } + +} diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:aapt="http://schemas.android.com/aapt" + android:width="108dp" + android:height="108dp" + android:viewportWidth="108" + android:viewportHeight="108"> + <path + android:fillType="evenOdd" + android:pathData="M32,64C32,64 38.39,52.99 44.13,50.95C51.37,48.37 70.14,49.57 70.14,49.57L108.26,87.69L108,109.01L75.97,107.97L32,64Z" + android:strokeWidth="1" + android:strokeColor="#00000000"> + <aapt:attr name="android:fillColor"> + <gradient + android:endX="78.5885" + android:endY="90.9159" + android:startX="48.7653" + android:startY="61.0927" + android:type="linear"> + <item + android:color="#44000000" + android:offset="0.0" /> + <item + android:color="#00000000" + android:offset="1.0" /> + </gradient> + </aapt:attr> + </path> + <path + android:fillColor="#FFFFFF" + android:fillType="nonZero" + android:pathData="M66.94,46.02L66.94,46.02C72.44,50.07 76,56.61 76,64L32,64C32,56.61 35.56,50.11 40.98,46.06L36.18,41.19C35.45,40.45 35.45,39.3 36.18,38.56C36.91,37.81 38.05,37.81 38.78,38.56L44.25,44.05C47.18,42.57 50.48,41.71 54,41.71C57.48,41.71 60.78,42.57 63.68,44.05L69.11,38.56C69.84,37.81 70.98,37.81 71.71,38.56C72.44,39.3 72.44,40.45 71.71,41.19L66.94,46.02ZM62.94,56.92C64.08,56.92 65,56.01 65,54.88C65,53.76 64.08,52.85 62.94,52.85C61.8,52.85 60.88,53.76 60.88,54.88C60.88,56.01 61.8,56.92 62.94,56.92ZM45.06,56.92C46.2,56.92 47.13,56.01 47.13,54.88C47.13,53.76 46.2,52.85 45.06,52.85C43.92,52.85 43,53.76 43,54.88C43,56.01 43.92,56.92 45.06,56.92Z" + android:strokeWidth="1" + android:strokeColor="#00000000" /> +</vector> diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable/ic_launcher_background.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ +<?xml version="1.0" encoding="utf-8"?> +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="108dp" + android:height="108dp" + android:viewportWidth="108" + android:viewportHeight="108"> + <path + android:fillColor="#008577" + android:pathData="M0,0h108v108h-108z" /> + <path + android:fillColor="#00000000" + android:pathData="M9,0L9,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M19,0L19,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M29,0L29,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M39,0L39,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M49,0L49,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M59,0L59,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M69,0L69,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M79,0L79,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M89,0L89,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M99,0L99,108" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,9L108,9" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,19L108,19" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,29L108,29" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,39L108,39" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,49L108,49" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,59L108,59" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,69L108,69" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,79L108,79" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,89L108,89" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M0,99L108,99" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M19,29L89,29" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M19,39L89,39" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M19,49L89,49" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M19,59L89,59" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M19,69L89,69" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M19,79L89,79" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M29,19L29,89" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M39,19L39,89" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M49,19L49,89" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M59,19L59,89" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M69,19L69,89" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> + <path + android:fillColor="#00000000" + android:pathData="M79,19L79,89" + android:strokeWidth="0.8" + android:strokeColor="#33FFFFFF" /> +</vector> diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/layout/activity_main.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..4ed8609 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,698 @@ +<?xml version="1.0" encoding="utf-8"?> +<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="match_parent" + android:orientation="vertical"> + + + <TextView + android:id="@+id/tv_content" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="10dp" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_api_version" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="褰撳墠API鐗堟湰" /> + + <Button + android:id="@+id/btn_device_model" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="璁惧model" /> + + <Button + android:id="@+id/btn_os_version" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="android绯荤粺鐗堟湰" /> + + <Button + android:id="@+id/btn_running_memory" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="杩愯鍐呭瓨" /> + + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_inner_storage" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍐呴儴瀛樺偍绌洪棿" /> + + <Button + android:id="@+id/btn_free_storage" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍐呴儴瀛樺偍鍙敤瀹归噺" /> + + <Button + android:id="@+id/btn_kernel_version" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑾峰彇褰揔ernel鐗堟湰" /> + + + </LinearLayout> + + <Button + android:id="@+id/btn_builder_number" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鑾峰彇璁惧鐨勫浐浠剁郴缁熺増鏈拰缂栬瘧鏃ユ湡" /> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_shut_down" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍏虫満" /> + + <Button + android:id="@+id/btn_reboot" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="閲嶅惎" /> + + <Button + android:id="@+id/btn_screenshot" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鎴睆" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <EditText + android:id="@+id/edit_brightness" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:hint="鍙栧��0锝�255" + android:inputType="number" /> + + + <Button + android:id="@+id/btn_brightness" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="璁剧疆灞忓箷浜害" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <EditText + android:id="@+id/edit_rotation" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:hint="杈撳叆鏂瑰悜 0銆�90銆�180銆�270 " + android:inputType="number" /> + + <Button + android:id="@+id/btn_rotation" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="璁剧疆灞忓箷鏂瑰悜" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + + <Button + android:id="@+id/btn_height" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鑾峰彇灞忓箷Y鍍忕礌" /> + + <Button + android:id="@+id/btn_width" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鑾峰彇灞忓箷X鍍忕礌" /> + + <Button + android:id="@+id/btn_open_back_light" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鎵撳紑鑳屽厜" /> + + <Button + android:id="@+id/btn_close_back_light" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鍏抽棴鑳屽厜" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_statusBar_show" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐘舵�佹爮鏄剧ず" /> + + <Button + android:id="@+id/btn_statusBar_hide" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鐘舵�佹爮闅愯棌" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_eth_mac_address" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="浠ュお缃� mac鍦板潃" /> + + <Button + android:id="@+id/btn_eth_ip_address" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浠ュお缃� ip鍦板潃" /> + + <Button + android:id="@+id/btn_inner" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鍐呴儴瀛樺偍 璺緞" /> + + <Button + android:id="@+id/btn_sdcard" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="sdcard 璺緞" /> + + <Button + android:id="@+id/btn_usb" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="usb 璺緞" /> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_install" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="闈欓粯瀹夎" /> + + <!-- <Button--> + <!-- android:id="@+id/btn_watch_dog_open"--> + <!-- android:layout_width="wrap_content"--> + <!-- android:layout_height="wrap_content"--> + <!-- android:layout_weight="1"--> + <!-- android:text="鐪嬮棬鐙楁墦寮�" />--> + + <!-- <Button--> + <!-- android:id="@+id/btn_watch_dog_close"--> + <!-- android:layout_width="wrap_content"--> + <!-- android:layout_height="wrap_content"--> + <!-- android:layout_weight="1"--> + <!-- android:text="鐪嬮棬鐙楀叧闂�" />--> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_sys_time" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="璁剧疆绯荤粺鏃堕棿" /> + + <Button + android:id="@+id/btn_sys_date" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="璁剧疆绯荤粺鏃ユ湡" /> + + <Button + android:id="@+id/btn_24" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="24灏忔椂鍒�" /> + + <Button + android:id="@+id/btn_12" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="12灏忔椂鍒�" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="10dp"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="璋冭妭绯荤粺闊抽噺" /> + + <SeekBar + android:id="@+id/sb_volume" + android:layout_width="match_parent" + android:layout_height="wrap_content" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + + <Button + android:id="@+id/btn_ethernet_connect" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="浠ュお缃戦摼鎺ョ姸鎬�" /> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="ip鍦板潃锛�" /> + + <EditText + android:id="@+id/edit_ip_address" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="192.168.0.123" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="缃戝叧锛�" /> + + <EditText + android:id="@+id/edit_gateway" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="192.168.0.1" /> + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="netmask锛�" /> + + <EditText + android:id="@+id/edit_netmask" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="255.255.225.0" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="dns1锛�" /> + + <EditText + android:id="@+id/edit_dns1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="192.168.0.1" /> + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="dns2锛�" /> + + <EditText + android:id="@+id/edit_dns2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="0.0.0.0" /> + </LinearLayout> + + <Button + android:id="@+id/btn_submit_static_ip" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="璁剧疆浠ュお缃戦潤鎬両P" /> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_sleep" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="浼戠湢" /> + + <Button + android:id="@+id/btn_screen" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鍏冲睆" /> + + <Button + android:id="@+id/btn_screen_open" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="浜睆" /> + + <Button + android:id="@+id/btn_master_clear" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="鎭㈠鍑哄巶璁剧疆" /> + + <Button + android:id="@+id/btn_filter_permission" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:text="杩囨护鏉冮檺" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_ota" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="ota鍗囩骇" /> + + <Button + android:id="@+id/btn_key_input" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="妯℃嫙灞忓箷瑙︽懜鐐硅Е鎽�" /> + + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <Button + android:id="@+id/btn_current_freq" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="cpu褰撳墠棰戠巼" /> + + <Button + android:id="@+id/btn_dram_current_freq" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="dram 褰撳墠棰戠巼" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <EditText + android:id="@+id/edit_cpu_governor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:hint="鍙紶鍏onservative銆乷ndemand銆乽serspace銆乸owersave銆乮nteractive銆乸erformance" /> + + <Button + android:id="@+id/btn_cpu_governor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="CPU绛栫暐" /> + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <EditText + android:id="@+id/edit_cpu_frequencies" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" /> + + <Button + android:id="@+id/btn_cpu_frequencies" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="CPU棰戠巼璁剧疆" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <EditText + android:id="@+id/edit_cpu_node" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:hint="琚帶鍒禼pu鑺傜偣" /> + + <EditText + android:id="@+id/edit_cpu_node_value" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:hint="鍊�" /> + + <Button + android:id="@+id/btn_cpu_control" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鎺у埗cpu1~cpu3 寮�鍏�" /> + + </LinearLayout> + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <EditText + android:id="@+id/edit_dram_governor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:hint="鍙紶鍏� dmc_ondemand銆乽serspace銆乸owersave銆乸erformance銆乻imple_ondemand" /> + + <Button + + android:id="@+id/btn_dram_governor" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="dram绛栫暐鎺у埗" /> + + + </LinearLayout> + + + <LinearLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:orientation="horizontal"> + + <EditText + android:id="@+id/edit_gpio_input" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:hint="璇疯緭鍏ヨ妭鐐�" /> + + <EditText + android:id="@+id/edit_gpio_input_value" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_weight="1" + android:hint="璇疯緭鍏ュ��" /> + + + <Button + android:id="@+id/btn_write_gpio" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="鍐欏叆" /> + + <Button + android:id="@+id/btn_read_gpio" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="璇诲嚭" /> + + </LinearLayout> + <LinearLayout + android:orientation="horizontal" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + <Button + android:id="@+id/btn_netmask" + android:text="瀛愮綉鎺╃爜" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + <Button + android:id="@+id/btn_gateway" + android:text="缃戝叧" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + <Button + android:id="@+id/btn_dns" + android:text="DNS" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + <Button + android:id="@+id/btn_disconnect_eth" + android:text="鏂紑浠ュお缃�" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + <Button + android:id="@+id/btn_connect_eth" + android:text="杩炴帴浠ュお缃�" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + </LinearLayout> + + <Button + android:id="@+id/btn_switch_dhcp" + android:text="鍒囨崲DHCP" + android:layout_width="wrap_content" + android:layout_height="wrap_content"/> + + + + + </LinearLayout> + + +</ScrollView> diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@drawable/ic_launcher_background" /> + <foreground android:drawable="@drawable/ic_launcher_foreground" /> +</adaptive-icon> \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..eca70cf --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> + <background android:drawable="@drawable/ic_launcher_background" /> + <foreground android:drawable="@drawable/ic_launcher_foreground" /> +</adaptive-icon> \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..898f3ed --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..dffca36 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-hdpi/ic_launcher_round.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..64ba76f --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..dae5e08 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-mdpi/ic_launcher_round.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..e5ed465 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..14ed0af --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..b0907ca --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..d8ae031 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..2c18de9 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..beed3cd --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/colors.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..69b2233 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/colors.xml @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="utf-8"?> +<resources> + <color name="colorPrimary">#008577</color> + <color name="colorPrimaryDark">#00574B</color> + <color name="colorAccent">#D81B60</color> +</resources> diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/strings.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..c254822 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ +<resources> + <string name="app_name">PX30SmatekAPI</string> +</resources> diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/styles.xml b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..5885930 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/main/res/values/styles.xml @@ -0,0 +1,11 @@ +<resources> + + <!-- Base application theme. --> + <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> + <!-- Customize your theme here. --> + <item name="colorPrimary">@color/colorPrimary</item> + <item name="colorPrimaryDark">@color/colorPrimaryDark</item> + <item name="colorAccent">@color/colorAccent</item> + </style> + +</resources> diff --git a/PX30SmatekAPI/PX30SmatekAPI/app/src/test/java/com/smatek/px30smatekapi/ExampleUnitTest.java b/PX30SmatekAPI/PX30SmatekAPI/app/src/test/java/com/smatek/px30smatekapi/ExampleUnitTest.java new file mode 100644 index 0000000..0e5038b --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/app/src/test/java/com/smatek/px30smatekapi/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.smatek.px30smatekapi; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see <a href="http://d.android.com/tools/testing">Testing documentation</a> + */ +public class ExampleUnitTest { + @Test + public void addition_isCorrect() { + assertEquals(4, 2 + 2); + } +} \ No newline at end of file diff --git a/PX30SmatekAPI/PX30SmatekAPI/build.gradle b/PX30SmatekAPI/PX30SmatekAPI/build.gradle new file mode 100644 index 0000000..f5fb2cc --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/build.gradle @@ -0,0 +1,27 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + repositories { + google() + jcenter() + + } + dependencies { + classpath 'com.android.tools.build:gradle:3.5.0' + + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + } +} + +allprojects { + repositories { + google() + jcenter() + + } +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/PX30SmatekAPI/PX30SmatekAPI/gradle.properties b/PX30SmatekAPI/PX30SmatekAPI/gradle.properties new file mode 100644 index 0000000..82618ce --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/gradle.properties @@ -0,0 +1,15 @@ +# Project-wide Gradle settings. +# IDE (e.g. Android Studio) users: +# Gradle settings configured through the IDE *will override* +# any settings specified in this file. +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +org.gradle.jvmargs=-Xmx1536m +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + + diff --git a/PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.jar b/PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000..f6b961f --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.jar Binary files differ diff --git a/PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.properties b/PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..ea727fc --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Fri Dec 13 09:07:19 CST 2019 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/PX30SmatekAPI/PX30SmatekAPI/gradlew b/PX30SmatekAPI/PX30SmatekAPI/gradlew new file mode 100644 index 0000000..cccdd3d --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/gradlew @@ -0,0 +1,172 @@ +#!/usr/bin/env sh + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS="" + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin, switch paths to Windows format before running java +if $cygwin ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=$((i+1)) + done + case $i in + (0) set -- ;; + (1) set -- "$args0" ;; + (2) set -- "$args0" "$args1" ;; + (3) set -- "$args0" "$args1" "$args2" ;; + (4) set -- "$args0" "$args1" "$args2" "$args3" ;; + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=$(save "$@") + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then + cd "$(dirname "$0")" +fi + +exec "$JAVACMD" "$@" diff --git a/PX30SmatekAPI/PX30SmatekAPI/gradlew.bat b/PX30SmatekAPI/PX30SmatekAPI/gradlew.bat new file mode 100644 index 0000000..f955316 --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/gradlew.bat @@ -0,0 +1,84 @@ +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS= + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/PX30SmatekAPI/PX30SmatekAPI/settings.gradle b/PX30SmatekAPI/PX30SmatekAPI/settings.gradle new file mode 100644 index 0000000..78470dc --- /dev/null +++ b/PX30SmatekAPI/PX30SmatekAPI/settings.gradle @@ -0,0 +1,2 @@ +include ':app' +rootProject.name='PX30SmatekAPI' -- Gitblit v1.8.0