From 25168a65562d2094c55d8f7a9df08526bc67f0bd Mon Sep 17 00:00:00 2001 From: fumiama Date: Wed, 16 Dec 2020 23:16:28 +0800 Subject: [PATCH] v1.0 --- .gitignore | 15 ++ .idea/.gitignore | 3 + .idea/compiler.xml | 6 + .idea/gradle.xml | 22 +++ .idea/jarRepositories.xml | 25 +++ .idea/misc.xml | 9 + .idea/vcs.xml | 6 + LICENSE | 21 -- app/.gitignore | 1 + app/build.gradle | 123 ++++++++++++ app/proguard-rules.pro | 21 ++ .../base16384/ExampleInstrumentedTest.kt | 24 +++ app/src/main/AndroidManifest.xml | 39 ++++ app/src/main/cpp/CMakeLists.txt | 48 +++++ app/src/main/cpp/base16384.cpp | 28 +++ app/src/main/cpp/base16384.h | 78 ++++++++ app/src/main/cpp/bitio.h | 53 +++++ .../top/fumiama/base16384/MainActivity.kt | 186 ++++++++++++++++++ app/src/main/res/drawable-anydpi/ic_add.xml | 13 ++ .../ic_launcher_background.xml | 170 ++++++++++++++++ app/src/main/res/drawable-anydpi/ic_xi.xml | 10 + app/src/main/res/font/gotham.ttf | Bin 0 -> 125676 bytes app/src/main/res/layout/activity_main.xml | 98 +++++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 7005 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 4536 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 9532 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 15560 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 16217 bytes app/src/main/res/values-zh/strings.xml | 14 ++ app/src/main/res/values/colors.xml | 4 + app/src/main/res/values/strings.xml | 13 ++ app/src/main/res/values/styles.xml | 14 ++ app/src/main/res/xml/provider_paths.xml | 5 + .../top/fumiama/base16384/ExampleUnitTest.kt | 17 ++ build.gradle | 27 +++ gradle.properties | 22 +++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++++++++ gradlew.bat | 84 ++++++++ settings.gradle | 2 + 42 files changed, 1363 insertions(+), 21 deletions(-) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml delete mode 100644 LICENSE create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/top/fumiama/base16384/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/cpp/CMakeLists.txt create mode 100644 app/src/main/cpp/base16384.cpp create mode 100644 app/src/main/cpp/base16384.h create mode 100644 app/src/main/cpp/bitio.h create mode 100644 app/src/main/java/top/fumiama/base16384/MainActivity.kt create mode 100644 app/src/main/res/drawable-anydpi/ic_add.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_xi.xml create mode 100644 app/src/main/res/font/gotham.ttf create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/values-zh/strings.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/xml/provider_paths.xml create mode 100644 app/src/test/java/top/fumiama/base16384/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.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 +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..61a9130 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..23a89bb --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,22 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..a5f05cd --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d5d35ec --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index e39e8a3..0000000 --- a/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2020 源文雨 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..4258db3 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,123 @@ +plugins { + id 'com.android.application' + id 'kotlin-android' + id 'kotlin-android-extensions' + id 'AndResGuard' +} + +android { + compileSdkVersion 30 + buildToolsVersion "30.0.2" + + defaultConfig { + applicationId "top.fumiama.base16384" + minSdkVersion 23 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + resConfigs "zh", "en" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + externalNativeBuild { + cmake { + cppFlags "" + } + } + multiDexEnabled = false + } + + signingConfigs { + release { + storeFile file('../../../OneDrive/swc/developer/android_key/open_key') + storePassword 'fumiama' + keyAlias 'default' + keyPassword 'fumiama' + v1SigningEnabled true + v2SigningEnabled true + } + } + + buildTypes { + release { + minifyEnabled true + shrinkResources true + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + signingConfig signingConfigs.release + } + debug{ + applicationIdSuffix '.test' + } + } + externalNativeBuild { + cmake { + path "src/main/cpp/CMakeLists.txt" + //version "3.10.2" + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + kotlinOptions { + jvmTarget = '1.8' + } +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" + implementation 'androidx.core:core-ktx:1.3.2' + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.2.1' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + testImplementation 'junit:junit:4.13.1' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' +} + +andResGuard { + // mappingFile = file("./resource_mapping.txt") + mappingFile = null + use7zip = true + useSign = true + // 打开这个开关,会keep住所有资源的原始路径,只混淆资源的名字 + keepRoot = false + // 设置这个值,会把arsc name列混淆成相同的名字,减少string常量池的大小 + fixedResName = "arg" + // 打开这个开关会合并所有哈希值相同的资源,但请不要过度依赖这个功能去除去冗余资源 + mergeDuplicatedRes = true + whiteList = [ + // for your icon + "R.drawable.icon", + // for fabric + "R.string.com.crashlytics.*", + // for google-services + "R.string.google_app_id", + "R.string.gcm_defaultSenderId", + "R.string.default_web_client_id", + "R.string.ga_trackingId", + "R.string.firebase_database_url", + "R.string.google_api_key", + "R.string.google_crash_reporting_api_key" + ] + compressFilePattern = [ + "*.png", + "*.jpg", + "*.jpeg", + "*.gif", + ] + sevenzip { + artifact = 'com.tencent.mm:SevenZip:1.2.20' + //path = "/usr/local/bin/7za" + } + + /** + * 可选: 如果不设置则会默认覆盖assemble输出的apk + **/ + // finalApkBackupPath = "${project.rootDir}/final.apk" + + /** + * 可选: 指定v1签名时生成jar文件的摘要算法 + * 默认值为“SHA-1” + **/ + // digestalg = "SHA-256" +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/app/src/androidTest/java/top/fumiama/base16384/ExampleInstrumentedTest.kt b/app/src/androidTest/java/top/fumiama/base16384/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..e5bedd8 --- /dev/null +++ b/app/src/androidTest/java/top/fumiama/base16384/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package top.fumiama.base16384 + +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 + +import org.junit.Test +import org.junit.runner.RunWith + +import org.junit.Assert.* + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("top.fumiama.base16384", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c546105 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/cpp/CMakeLists.txt b/app/src/main/cpp/CMakeLists.txt new file mode 100644 index 0000000..755dbc5 --- /dev/null +++ b/app/src/main/cpp/CMakeLists.txt @@ -0,0 +1,48 @@ +# For more information about using CMake with Android Studio, read the +# documentation: https://d.android.com/studio/projects/add-native-code.html + +# Sets the minimum version of CMake required to build the native library. + +cmake_minimum_required(VERSION 3.10.2) + +# Declares and names the project. + +project("base16384") + +# Creates and names a library, sets it as either STATIC +# or SHARED, and provides the relative paths to its source code. +# You can define multiple libraries, and CMake builds them for you. +# Gradle automatically packages shared libraries with your APK. + +add_library( # Sets the name of the library. + base16384 + + # Sets the library as a shared library. + SHARED + + # Provides a relative path to your source file(s). + base16384.cpp ) + +# Searches for a specified prebuilt library and stores the path as a +# variable. Because CMake includes system libraries in the search path by +# default, you only need to specify the name of the public NDK library +# you want to add. CMake verifies that the library exists before +# completing its build. + +find_library( # Sets the name of the path variable. + log-lib + + # Specifies the name of the NDK library that + # you want CMake to locate. + log ) + +# Specifies libraries CMake should link to your target library. You +# can link multiple libraries, such as libraries you define in this +# build script, prebuilt third-party libraries, or system libraries. + +target_link_libraries( # Specifies the target library. + base16384 + + # Links the target library to the log library + # included in the NDK. + ${log-lib} ) \ No newline at end of file diff --git a/app/src/main/cpp/base16384.cpp b/app/src/main/cpp/base16384.cpp new file mode 100644 index 0000000..d7b36de --- /dev/null +++ b/app/src/main/cpp/base16384.cpp @@ -0,0 +1,28 @@ +#include +#include +#include +#include "base16384.h" + +FILE *fp, *fpo; + +#define execute(function){\ + const char *inputFileDir = env->GetStringUTFChars(sf, JNI_FALSE);\ + const char *outputFileDir = env->GetStringUTFChars(df, JNI_FALSE);\ + fp = fpo = nullptr;\ + fp = fopen(inputFileDir, "rb");\ + fpo = fopen(outputFileDir, "wb");\ + if(fp != nullptr && fpo != nullptr){\ + function(fp, fpo);\ + env->ReleaseStringUTFChars(sf, inputFileDir);\ + env->ReleaseStringUTFChars(df, outputFileDir);\ + fclose(fp);\ + fclose(fpo);\ + return 0;\ + }else return 1;\ +} + +extern "C" JNIEXPORT int JNICALL +Java_top_fumiama_base16384_MainActivity_encode(JNIEnv* env, jobject, jstring sf, jstring df) execute(encode) + +extern "C" JNIEXPORT int JNICALL +Java_top_fumiama_base16384_MainActivity_decode(JNIEnv* env, jobject, jstring sf, jstring df) execute(decode) \ No newline at end of file diff --git a/app/src/main/cpp/base16384.h b/app/src/main/cpp/base16384.h new file mode 100644 index 0000000..76e411c --- /dev/null +++ b/app/src/main/cpp/base16384.h @@ -0,0 +1,78 @@ +// +// Created by rumia on 2020/12/16. +// + +#ifndef BASE16384_BASE16384_H +#define BASE16384_BASE16384_H + +//base16384.h +//MIT fumiama 20200416 +#include "bitio.h" +#define HEAD 0x4E +BIT outbuf; +unsigned char buf[BUFSIZ]; +void push(int istrue, FILE *fpo, int offset){ + if(!~pushbit(&outbuf, istrue)){ + if(offset) for(int i = 0; i < BITBUFSIZE; i += 2) outbuf.b[i] += offset; + fwrite(outbuf.b, sizeof(char), BITBUFSIZE, fpo); + outbuf.p = 0; + pushbit(&outbuf, istrue); + } +} +#define setoffset(x, offset){\ + char flag = 0;\ + ch1 = ch2 = x;\ + while(!feof(fp) && (ch1 = fgetc(fp)) == x && (ch2 = fgetc(fp)) == x) {cnt8 -= offset; flag++;}\ + if(ch2 != x) {ungetc(ch2, fp); ch2 = x;}\ + if(ch1 != x) {ungetc(ch1, fp); ch1 = x;}\ + while(feof(fp) && buf[cnt - 1] == x && buf[cnt - 2] == x) {cnt8 -= offset; cnt -= 2; flag++;}\ + if(flag) cnt8 -= 8;\ +} +void encode(FILE *fp, FILE *fpo){ + int cnt; + + memset(&outbuf, 0, sizeof(BIT)); + fputc(0xFE, fpo); + fputc(0xFF, fpo); + while((cnt = fread(buf, sizeof(char), BUFSIZ, fp))){ + for(int i = 0; i < cnt * 8; i++){ + if(!(outbuf.p % 16)){ + push(0, fpo, HEAD); + push(0, fpo, HEAD); + } + push(buf[i / 8] & (128u >> (i % 8)), fpo, HEAD); + } + } + if(outbuf.p){ + outbuf.b[outbuf.p / 8] &= ~(255u >> outbuf.p % 8); + for(int i = 0; i < outbuf.p / 8 + 1; i += 2) outbuf.b[i] += HEAD; + fwrite(outbuf.b, sizeof(char), (outbuf.p % 8)?outbuf.p / 8 + 1:outbuf.p / 8 , fpo); + if(((outbuf.p % 8)?outbuf.p / 8 + 1:outbuf.p / 8) % 2){ + fputc(0, fpo); + fputc('>', fpo); + fputc('>', fpo); + } + for(int i = 0; i < outbuf.p % 8; i++) fputc('=', fpo); + } +} +void decode(FILE *fp, FILE *fpo){ + int cnt, cnt8; + char ch1, ch2; + memset(&outbuf, 0, sizeof(BIT)); + while((cnt = fread(buf, sizeof(char), BUFSIZ, fp))){ + cnt8 = cnt * 8; + setoffset('=', 14) + setoffset('>', 16) + + for(int i = ((buf[0] == 0xFE)?16:0); i < cnt8; i++){ + if(!(i % 16)){ + buf[i / 8] -= HEAD; + i += 2; + } + push(buf[i / 8] & (128u >> (i % 8)), fpo, 0); + } + } + if(outbuf.p) fwrite(outbuf.b, sizeof(char), (outbuf.p % 8)?outbuf.p / 8 + 1:outbuf.p / 8, fpo); +} + +#endif //BASE16384_BASE16384_H diff --git a/app/src/main/cpp/bitio.h b/app/src/main/cpp/bitio.h new file mode 100644 index 0000000..47d7084 --- /dev/null +++ b/app/src/main/cpp/bitio.h @@ -0,0 +1,53 @@ +// +// Created by rumia on 2020/12/16. +// + +#ifndef BASE16384_BITIO_H +#define BASE16384_BITIO_H +//bitio.h +//made by fumiama +//20200413 +#ifndef BITBUFSIZE +#define BITBUFSIZE 1024 +#endif +struct BIT{ + char b[BITBUFSIZE]; + int p; +}; +typedef struct BIT BIT; + +int pushbit(BIT *buffer, const int isture){ + if(buffer->p >= BITBUFSIZE * 8) return EOF; + else if(isture) buffer->b[buffer->p / 8] |= 128u >> buffer->p % 8; + else buffer->b[buffer->p / 8] &= ~(128u >> buffer->p % 8); + buffer->p++; + return isture; +} + +int fpushbit(BIT *buffer, FILE *fp){ + memset(buffer, 0, sizeof(BIT)); + if((buffer->p = fread(buffer->b, sizeof(char), BITBUFSIZE, fp)) && feof(fp)) + buffer->p = (buffer->p - 2) * 8 + buffer->b[buffer->p - 1] + 1; + else buffer->p *= 8; + return buffer->p; +} + +int changebit(BIT *buffer, const int isture, const int position){ + if(position >= buffer->p) return EOF; + else if(isture) buffer->b[position / 8] |= 128u >> position % 8; + else buffer->b[position / 8] &= ~(128u >> position % 8); + buffer->p++; + return isture; +} + +int readbit(const BIT *buffer, const int position){ + if(position >= buffer->p) return EOF; + else return buffer->b[position / 8] & (128u >> position % 8); +} + +int popbit(BIT *buffer){ + if(buffer->p >= BITBUFSIZE * 8 || buffer->p < 0) return EOF; + buffer->p--; + return buffer->b[(buffer->p+1) / 8] & (128u >> (buffer->p+1) % 8); +} +#endif //BASE16384_BITIO_H diff --git a/app/src/main/java/top/fumiama/base16384/MainActivity.kt b/app/src/main/java/top/fumiama/base16384/MainActivity.kt new file mode 100644 index 0000000..075ad21 --- /dev/null +++ b/app/src/main/java/top/fumiama/base16384/MainActivity.kt @@ -0,0 +1,186 @@ +package top.fumiama.base16384 + +import android.Manifest +import android.app.Activity +import android.content.Intent +import android.content.pm.PackageManager +import android.net.Uri +import android.os.Build +import android.os.Bundle +import android.view.View +import android.widget.Toast +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat +import kotlinx.android.synthetic.main.activity_main.* +import java.io.File +import java.io.FileInputStream + + +class MainActivity : Activity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + sv.viewTreeObserver.addOnGlobalLayoutListener { + val h = sv.getChildAt(0).height + tti.visibility = if(h > resources.displayMetrics.heightPixels) View.GONE else View.VISIBLE + } + fab.setOnClickListener { if(checkReadPermission()) pickFile() } + ben.setOnClickListener { + ten.text?.let { + if(it.isNotEmpty()){ + val inputFile = generateCacheFile("input") + val outputFile = generateCacheFile("output") + inputFile.writeText(it.toString(), Charsets.UTF_16BE) + encode(inputFile.absolutePath, outputFile.absolutePath) + tde.setText(outputFile.readText(Charsets.UTF_16BE)) + } + } + } + bde.setOnClickListener { + tde.text?.let { + if(it.isNotEmpty()){ + val inputFile = generateCacheFile("input") + val outputFile = generateCacheFile("output") + inputFile.writeText(it.toString(), Charsets.UTF_16BE) + decode(inputFile.absolutePath, outputFile.absolutePath) + ten.setText(outputFile.readText(Charsets.UTF_16BE)) + } + } + } + } + + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (resultCode == RESULT_OK) when (requestCode) { + 1 -> data?.data?.let { doFromFile(it) } + 2 -> data?.data?.let { save2Uri(it) } + } + } + + override fun onRequestPermissionsResult( + requestCode: Int, + permissions: Array, + grantResults: IntArray + ) { + when (requestCode) { + 1 -> { + if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) pickFile() + else Toast.makeText(this, R.string.permissionDenied, Toast.LENGTH_SHORT).show() + } + } + } + + /*private fun packZip(zipf: File, outf: File){ + zipf.parentFile?.let { if(!it.exists()) it.mkdirs() } + if(zipf.exists()) zipf.delete() + zipf.createNewFile() + val zip = ZipOutputStream(CheckedOutputStream(zipf.outputStream(), CRC32())) + zip.setLevel(9) + zip.putNextEntry(ZipEntry("output")) + zip.write(outf.readBytes()) + zip.flush() + zip.close() + }*/ + + + private fun doFromFile(uri: Uri){ + val inputFile = generateCacheFile("input") + val outputFile = generateCacheFile("output") + saveFile(inputFile, uri) + val br = inputFile.bufferedReader(Charsets.US_ASCII) + val head1 = br.read() + val head2 = br.read() + val re = if(head1 == 0xFE && head2 == 0xFF) decode(inputFile.absolutePath, outputFile.absolutePath) + else encode(inputFile.absolutePath, outputFile.absolutePath) + Toast.makeText( + this, + if(re == 0) { + createFile(getString(R.string.output)) + R.string.succeed + } else R.string.failed, + Toast.LENGTH_SHORT + ).show() + } + + private fun saveFile(f: File?, uri: Uri) { + val fd = contentResolver.openFileDescriptor(uri, "r") + fd?.fileDescriptor?.let { + val fi = FileInputStream(it) + f?.outputStream()?.let { + fi.copyTo(it) + it.close() + } + fi.close() + } + fd?.close() + } + + private fun save2Uri(uri: Uri){ + val outputFile = generateCacheFile("output") + contentResolver.openOutputStream(uri)?.let { + val fi = outputFile.inputStream() + fi.copyTo(it) + fi.close() + it.close() + } + } + + private fun createFile(fileName: String, type: String = "*/*"){ + val intent = Intent(Intent.ACTION_CREATE_DOCUMENT) + intent.addCategory(Intent.CATEGORY_OPENABLE) + intent.type = type + intent.putExtra(Intent.EXTRA_TITLE, fileName) + startActivityForResult(intent, 2) + } + + /*private fun shareFile(file: File, type: String) { + if (file.exists()) { + val share = Intent(Intent.ACTION_SEND) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val contentUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".fileprovider", file) + share.putExtra(Intent.EXTRA_STREAM, contentUri) + share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + }else share.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)) + share.type = type //此处可发送多种文件 + share.flags = Intent.FLAG_ACTIVITY_NEW_TASK + share.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + startActivity(Intent.createChooser(share, getString(R.string.share))) + } else Toast.makeText(this, getString(R.string.read_file_err), Toast.LENGTH_SHORT).show() + }*/ + + private fun checkReadPermission(): Boolean { + return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N && ContextCompat.checkSelfPermission( + this, + Manifest.permission.READ_EXTERNAL_STORAGE + ) != PackageManager.PERMISSION_GRANTED) { + ActivityCompat.requestPermissions( + this, + arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE), + 1 + ) + false + } else true + } + + private fun pickFile() { + val i = Intent(Intent.ACTION_GET_CONTENT) + i.type = "*/*" + startActivityForResult(i, 1) + } + + private fun generateCacheFile(name: String) = File(cacheDir, name) + + /** + * A native method that is implemented by the 'native-lib' native library, + * which is packaged with this application. + */ + private external fun encode(sf: String, df: String): Int + private external fun decode(sf: String, df: String): Int + + companion object { + // Used to load the 'native-lib' library on application startup. + init { + System.loadLibrary("base16384") + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-anydpi/ic_add.xml b/app/src/main/res/drawable-anydpi/ic_add.xml new file mode 100644 index 0000000..624632f --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_add.xml @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-anydpi/ic_launcher_background.xml b/app/src/main/res/drawable-anydpi/ic_launcher_background.xml new file mode 100644 index 0000000..f2195d5 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable-anydpi/ic_xi.xml b/app/src/main/res/drawable-anydpi/ic_xi.xml new file mode 100644 index 0000000..9e842b9 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_xi.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/font/gotham.ttf b/app/src/main/res/font/gotham.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58018ade9807e62fd0da2567d12e32094fe63e75 GIT binary patch literal 125676 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 QPs6poi9G)Jv%t^(JO2`Ou>b%7 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 0000000..a0b01f4 --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + +