commit 573de0e053f81541b89e76be56270853f72b1628 Author: zhouzhibo Date: Thu Mar 26 16:41:27 2026 +0800 feat: 初始化仓库 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..74e8984 --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +*.iml +.gradle +/local.properties +.idea +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild diff --git a/README.md b/README.md new file mode 100644 index 0000000..79ca076 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +V2026.1 ѷ diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..796b96d --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 0000000..3d84e34 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,44 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 34 +// buildToolsVersion "34.0.0" + defaultConfig { + applicationId "com.example.TxHidposDemo" + minSdkVersion 21 + //noinspection ExpiredTargetSdkVersion + targetSdkVersion 29 + versionCode 26032600 + versionName "2026.1" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + applicationVariants.all { variant -> + variant.outputs.all { output -> + // ޸ APK ļ + output.outputFileName = "ɨŶ_V${variant.versionName}.apk" + } + } + buildTypes { + release { + signingConfig signingConfigs.debug + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions.encoding="GBK" +// compileOptions { +// sourceCompatibility JavaVersion.VERSION_11 +// targetCompatibility JavaVersion.VERSION_11 +// } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation('com.squareup.okhttp3:okhttp:5.2.1') +// implementation 'androidx.startup:startup-runtime:1.2.0' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation files('libs/tx_hidpos.jar') +} diff --git a/app/libs/tx_hidpos.jar b/app/libs/tx_hidpos.jar new file mode 100644 index 0000000..5f50ae7 Binary files /dev/null and b/app/libs/tx_hidpos.jar differ diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..f1b4245 --- /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 diff --git a/app/src/androidTest/java/com/example/TxHidposDemo/ExampleInstrumentedTest.java b/app/src/androidTest/java/com/example/TxHidposDemo/ExampleInstrumentedTest.java new file mode 100644 index 0000000..0bda22a --- /dev/null +++ b/app/src/androidTest/java/com/example/TxHidposDemo/ExampleInstrumentedTest.java @@ -0,0 +1,27 @@ +package com.example.TxHidposDemo; + +import android.content.Context; + +import androidx.test.InstrumentationRegistry; +import androidx.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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.example.scantest", appContext.getPackageName()); + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..390bc35 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/java/com/example/TxHidposDemo/HomeActivity.java b/app/src/main/java/com/example/TxHidposDemo/HomeActivity.java new file mode 100644 index 0000000..5cabf25 --- /dev/null +++ b/app/src/main/java/com/example/TxHidposDemo/HomeActivity.java @@ -0,0 +1,255 @@ +package com.example.TxHidposDemo; + +import android.annotation.TargetApi; +import android.app.Activity; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.util.Log; +import android.view.KeyEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +import com.tool.TxScanner; + +import java.io.IOException; +import java.util.concurrent.locks.*; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1) +public class HomeActivity extends Activity { + TextView cTextDecode; + TextView cTextInfo; + TextView cTextVer; + TextView cTextState; + Button start; + Button stop; + + private TxScanner cTxScanner; /**SDK**/ + static int uiDecodeCnt = 0; + + public static final String TAG = "TSD "; + + /**Ϣ**/ + public final static int TS_MSG_INFO = 1; /**ʾϢ**/ + public final static int TS_MSG_COMM_STATE = 2; /**ͨ״̬**/ + public final static int TS_MSG_DECODE_DATA = 3; /****/ + + private ReentrantLock lock = new ReentrantLock(); + + public boolean BusyFlag = false; + private byte[] pDecodeDataParam = new byte[128]; + private byte[] pCommStateParam = new byte[128]; + + private OkHttpClient okHttpClient; + + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.home); + cTextDecode = (TextView) findViewById(R.id.device_decode); + cTextInfo = (TextView) findViewById(R.id.device_info); + cTextVer = (TextView) findViewById(R.id.device_version); + cTextState = (TextView) findViewById(R.id.device_state); + start = (Button) findViewById(R.id.start_scan); + stop = (Button) findViewById(R.id.stop_scan); + cTxScanner = new TxScanner(this, myHandler); + + /**USBǷucState,0:δ,1:**/ + TxScanner.TsCommStateCbFun fTsCommStateCbFun = new TxScanner.TsCommStateCbFun() { + @Override + public int tx_sanner_comm_state_cb_fun(byte[] pParam, byte ucState) { + String stbuf; + byte[] ucBufTemp; + byte[] ucBufTemp1; + int iRet; + + System.out.printf("USB״̬=%d\r\n",ucState); + if(ucState == 1) + { + ScanMsg(TS_MSG_COMM_STATE, 0, 0, "ӳɹ"); + } + else + { + ScanMsg(TS_MSG_COMM_STATE, 0, 0, "Ͽ"); + } + return 0; + } + }; + + /****/ + TxScanner.TsDecodeDataCbFun fTsDecodeDataCbFun = new TxScanner.TsDecodeDataCbFun() { + @Override + public int tx_sanner_decode_data_cb_fun(byte[] pParam, byte ucCodeType, byte[] pBuf, int uiBufLen) { + byte[] decode = new byte[uiBufLen]; // + System.arraycopy(pBuf, 0, decode, 0, uiBufLen); + uiDecodeCnt++; + + ScanMsg(TS_MSG_DECODE_DATA, ucCodeType, 0, new String(decode)); + + System.out.printf("[%03d][%02d]len:%d, buf:", uiDecodeCnt, ucCodeType, uiBufLen); +// for (byte b : decode) { +// System.out.printf("%c", b); +// } +// System.out.println(); + + return 0; + } + }; + + cTextVer.setText("汾:"+ cTxScanner.tx_scanner_get_version() + " ["+ cTxScanner.tx_scanner_get_product_type() + "]"); + + cTxScanner.tx_scanner_state_fun_register(pCommStateParam, fTsCommStateCbFun); + cTxScanner.tx_scanner_get_data_fun_register(pDecodeDataParam, fTsDecodeDataCbFun); + cTxScanner.tx_scanner_init(); + + start.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + new Thread(new StartDecodeRunnable()).start(); + } + }); + + stop.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View view) { + new Thread(new StopDecodeRunnable()).start(); + } + }); + + okHttpClient = new OkHttpClient.Builder().build(); + } + + private class StartDecodeRunnable implements Runnable{ + @Override + public void run() { + int iRet = -1; + + lock.lock(); + try { + iRet = cTxScanner.tx_scanner_decode_start(); +// Log.i(TAG, "StartDecode" + "iRet:" + iRet); + if(-1 == iRet) { + ScanMsg(TS_MSG_INFO, 0, 0, "ʼɨʧ"); + } + else { + ScanMsg(TS_MSG_INFO, 0, 0, "ʼɨɹ"); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + lock.unlock(); + } + } + + private class StopDecodeRunnable implements Runnable{ + @Override + public void run() { + int iRet = -1; + + lock.lock(); + try { + iRet = cTxScanner.tx_scanner_decode_stop(); +// Log.i(TAG, "StopDecode" + "iRet:" + iRet); + if(-1 == iRet) { + ScanMsg(TS_MSG_INFO, 0, 0, "ɨʧ"); + } + else { + ScanMsg(TS_MSG_INFO, 0, 0, "ɨɹ"); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + lock.unlock(); + } + } + + private void ScanMsg(int mode, int type, int status, Object value) + { + Message msg = new Message(); + msg.what = mode; + msg.arg1 = type; + msg.arg2 = status; + msg.obj = value; + myHandler.sendMessage(msg); + } + + @SuppressWarnings("all") + Handler myHandler = new Handler(Looper.getMainLooper()) + { + public void handleMessage(Message msg) + { + switch(msg.what) + { + /**ʾϢ**/ + case TS_MSG_INFO: + String stInfo = (String)msg.obj; + cTextInfo.setText(stInfo); + break; + + /**ͨ״̬**/ + case TS_MSG_COMM_STATE: + String stState = (String)msg.obj; + cTextState.setText(stState); + break; + + /****/ + case TS_MSG_DECODE_DATA: + int iType = msg.arg1; + String stDecodeData = (String)msg.obj; + cTextDecode.setText("["+(uiDecodeCnt)+"]" + "["+iType+"]" + ":"+stDecodeData.length() + ",:\r\n" + stDecodeData); + try { + Request request = new Request.Builder().url("http://62.234.150.191:9701/app-api/order/scanCode?data=" + stDecodeData) + .get() + .build(); + okHttpClient.newCall(request).enqueue(new okhttp3.Callback() { + @Override + public void onFailure(@NonNull Call call, @NonNull IOException e) { + runOnUiThread(() -> { + cTextDecode.append("\r\nʧܣ" + Log.getStackTraceString(e)); + }); + } + + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { + runOnUiThread(() -> { + cTextDecode.append("\r\n" + "ɹ" + response); + }); + } + }); + } catch (Exception e) { + cTextDecode.append("\r\nʧܣ" + Log.getStackTraceString(e)); + } + break; + + default: + break; + } + } + }; + + public boolean onKeyDown(int keyCode, KeyEvent event) + { + if ((keyCode == KeyEvent.KEYCODE_BACK ) || (keyCode == KeyEvent.KEYCODE_HOME )) + { + try { + cTxScanner.tx_scanner_deinit(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.exit(0); + } + return false; + } +} + diff --git a/app/src/main/java/com/example/TxHidposDemo/ScanDevice.java b/app/src/main/java/com/example/TxHidposDemo/ScanDevice.java new file mode 100644 index 0000000..cfd73d5 --- /dev/null +++ b/app/src/main/java/com/example/TxHidposDemo/ScanDevice.java @@ -0,0 +1,33 @@ +package com.example.TxHidposDemo; + +public class ScanDevice { + private String devicename; + private int node; + private int DevStatus; + + public final static int DEVICE_NONE = 0; + public final static int DEVICE_INPUT = 1; + public final static int DEVICE_CONNECT = 2; + + public ScanDevice(int node){ + this.node = node; + this.devicename = "Device" + Integer.toString(node); + this.DevStatus = DEVICE_NONE; + } + public String getBandname() { + return devicename; + } + + public int GetNode() + { + return node; + } + + public void setStatus(int status) + { + DevStatus = status; + } + public int getStatus(){ + return DevStatus; + } +} diff --git a/app/src/main/java/com/example/TxHidposDemo/home/HomeActivity.java b/app/src/main/java/com/example/TxHidposDemo/home/HomeActivity.java new file mode 100644 index 0000000..aa9f36e --- /dev/null +++ b/app/src/main/java/com/example/TxHidposDemo/home/HomeActivity.java @@ -0,0 +1,308 @@ +package com.example.TxHidposDemo.home; + +import android.annotation.TargetApi; +import android.app.ActionBar; +import android.app.Activity; +import android.os.Build; +import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.os.Message; +import android.util.Log; +import android.view.KeyEvent; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.WindowManager; +import android.widget.Button; +import android.widget.TextView; + +import androidx.annotation.NonNull; + +import com.example.TxHidposDemo.R; +import com.tool.TxScanner; + +import org.json.JSONObject; + +import java.io.IOException; +import java.net.URLDecoder; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.locks.ReentrantLock; + +import javax.net.ssl.HostnameVerifier; +import javax.net.ssl.SSLSession; + +import okhttp3.Call; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1) +public class HomeActivity extends Activity { +// TextView cTextDecode; +// TextView cTextInfo; +// TextView cTextVer; +// TextView cTextState; +// Button start; +// Button stop; + /** + * ȡʹ + */ + TextView numberWindow; + /** + * ȡID + */ + TextView numberId; + /** + * ǰȡͺ + */ + TextView currentNumber; + + private TxScanner cTxScanner; /**SDK**/ + static int uiDecodeCnt = 0; + + public static final String TAG = "TSD "; + + /**Ϣ**/ + public final static int TS_MSG_INFO = 1; /**ʾϢ**/ + public final static int TS_MSG_COMM_STATE = 2; /**ͨ״̬**/ + public final static int TS_MSG_DECODE_DATA = 3; /****/ + + private ReentrantLock lock = new ReentrantLock(); + + public boolean BusyFlag = false; + private byte[] pDecodeDataParam = new byte[128]; + private byte[] pCommStateParam = new byte[128]; + + private OkHttpClient okHttpClient; + + public void onCreate(Bundle savedInstanceState) { + ActionBar actionBar = getActionBar(); + if (actionBar != null) { + actionBar.hide(); + } + getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_home); + numberWindow = (TextView) findViewById(R.id.number_window); + numberId = (TextView) findViewById(R.id.number_id); + currentNumber = (TextView) findViewById(R.id.current_number); + numberWindow.setText("-Ŵ"); + numberId.setText("---"); + currentNumber.setText("ǰȡ: --λ"); +// cTextDecode = (TextView) findViewById(R.id.device_decode); +// cTextInfo = (TextView) findViewById(R.id.device_info); +// cTextVer = (TextView) findViewById(R.id.device_version); +// cTextState = (TextView) findViewById(R.id.device_state); +// start = (Button) findViewById(R.id.start_scan); +// stop = (Button) findViewById(R.id.stop_scan); + cTxScanner = new TxScanner(this, myHandler); + + /**USBǷucState,0:δ,1:**/ + TxScanner.TsCommStateCbFun fTsCommStateCbFun = new TxScanner.TsCommStateCbFun() { + @Override + public int tx_sanner_comm_state_cb_fun(byte[] pParam, byte ucState) { + String stbuf; + byte[] ucBufTemp; + byte[] ucBufTemp1; + int iRet; + + System.out.printf("USB״̬=%d\r\n",ucState); + if(ucState == 1) + { + ScanMsg(TS_MSG_COMM_STATE, 0, 0, "ӳɹ"); + } + else + { + ScanMsg(TS_MSG_COMM_STATE, 0, 0, "Ͽ"); + } + return 0; + } + }; + + /****/ + TxScanner.TsDecodeDataCbFun fTsDecodeDataCbFun = new TxScanner.TsDecodeDataCbFun() { + @Override + public int tx_sanner_decode_data_cb_fun(byte[] pParam, byte ucCodeType, byte[] pBuf, int uiBufLen) { + byte[] decode = new byte[uiBufLen]; // + System.arraycopy(pBuf, 0, decode, 0, uiBufLen); + uiDecodeCnt++; + + ScanMsg(TS_MSG_DECODE_DATA, ucCodeType, 0, new String(decode)); + + System.out.printf("[%03d][%02d]len:%d, buf:", uiDecodeCnt, ucCodeType, uiBufLen); +// for (byte b : decode) { +// System.out.printf("%c", b); +// } +// System.out.println(); + + return 0; + } + }; + +// cTextVer.setText("汾:"+ cTxScanner.tx_scanner_get_version() + " ["+ cTxScanner.tx_scanner_get_product_type() + "]"); + + cTxScanner.tx_scanner_state_fun_register(pCommStateParam, fTsCommStateCbFun); + cTxScanner.tx_scanner_get_data_fun_register(pDecodeDataParam, fTsDecodeDataCbFun); + cTxScanner.tx_scanner_init(); + +// start.setOnClickListener(new OnClickListener() { +// @Override +// public void onClick(View view) { +// new Thread(new StartDecodeRunnable()).start(); +// } +// }); +// +// stop.setOnClickListener(new OnClickListener() { +// @Override +// public void onClick(View view) { +// new Thread(new StopDecodeRunnable()).start(); +// } +// }); + + okHttpClient = new OkHttpClient.Builder() + .hostnameVerifier((s, sslSession) -> true) + .build(); + } + + private class StartDecodeRunnable implements Runnable{ + @Override + public void run() { + int iRet = -1; + + lock.lock(); + try { + iRet = cTxScanner.tx_scanner_decode_start(); +// Log.i(TAG, "StartDecode" + "iRet:" + iRet); + if(-1 == iRet) { + ScanMsg(TS_MSG_INFO, 0, 0, "ʼɨʧ"); + } + else { + ScanMsg(TS_MSG_INFO, 0, 0, "ʼɨɹ"); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + lock.unlock(); + } + } + + private class StopDecodeRunnable implements Runnable{ + @Override + public void run() { + int iRet = -1; + + lock.lock(); + try { + iRet = cTxScanner.tx_scanner_decode_stop(); +// Log.i(TAG, "StopDecode" + "iRet:" + iRet); + if(-1 == iRet) { + ScanMsg(TS_MSG_INFO, 0, 0, "ɨʧ"); + } + else { + ScanMsg(TS_MSG_INFO, 0, 0, "ɨɹ"); + } + } catch (InterruptedException e) { + e.printStackTrace(); + } + lock.unlock(); + } + } + + private void ScanMsg(int mode, int type, int status, Object value) + { + Message msg = new Message(); + msg.what = mode; + msg.arg1 = type; + msg.arg2 = status; + msg.obj = value; + myHandler.sendMessage(msg); + } + + @SuppressWarnings("all") + Handler myHandler = new Handler(Looper.getMainLooper()) + { + public void handleMessage(Message msg) + { + switch(msg.what) + { + /**ʾϢ**/ + case TS_MSG_INFO: + String stInfo = (String)msg.obj; +// cTextInfo.setText(stInfo); + break; + + /**ͨ״̬**/ + case TS_MSG_COMM_STATE: + String stState = (String)msg.obj; +// cTextState.setText(stState); + break; + + /****/ + case TS_MSG_DECODE_DATA: + int iType = msg.arg1; + String stDecodeData = (String)msg.obj; +// cTextDecode.setText("["+(uiDecodeCnt)+"]" + "["+iType+"]" + ":"+stDecodeData.length() + ",:\r\n" + stDecodeData); + try { + String data = URLDecoder.decode(stDecodeData, StandardCharsets.UTF_8); + Request request = new Request.Builder().url("https://hrst.ddtlsoft.com/app-api/order/scanCode?data=" + data) + .get() + .build(); + okHttpClient.newCall(request).enqueue(new okhttp3.Callback() { + @Override + public void onFailure(@NonNull Call call, @NonNull IOException e) { + runOnUiThread(() -> { +// cTextDecode.append("\r\nʧܣ" + Log.getStackTraceString(e)); + numberWindow.setText("-Ŵ"); + numberId.setText("---"); + currentNumber.setText("ǰȡ: --λ"); + }); + } + + @Override + public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { + runOnUiThread(() -> { +// cTextDecode.append("\r\n" + "ɹ" + response); + try { + JSONObject jsonObject = new JSONObject(response.body().string()); + JSONObject data = jsonObject.getJSONObject("data"); + numberWindow.setText(data.getString("window")); + numberId.setText(String.valueOf(data.getInt("numberId"))); + currentNumber.setText("ǰȡ: " + data.getInt("num") + "λ"); + } catch (Exception e) { + numberWindow.setText("-Ŵ"); + numberId.setText("---"); + currentNumber.setText("ǰȡ: --λ"); + } + }); + } + }); + } catch (Exception e) { +// cTextDecode.append("\r\nʧܣ" + Log.getStackTraceString(e)); + numberWindow.setText("-Ŵ"); + numberId.setText("---"); + currentNumber.setText("ǰȡ: --λ"); + } + break; + + default: + break; + } + } + }; + + public boolean onKeyDown(int keyCode, KeyEvent event) + { + if ((keyCode == KeyEvent.KEYCODE_BACK ) || (keyCode == KeyEvent.KEYCODE_HOME )) + { + try { + cTxScanner.tx_scanner_deinit(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + System.exit(0); + } + return false; + } +} + diff --git a/app/src/main/res/drawable-hdpi/editsharp.xml b/app/src/main/res/drawable-hdpi/editsharp.xml new file mode 100644 index 0000000..9d3f0e9 --- /dev/null +++ b/app/src/main/res/drawable-hdpi/editsharp.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-hdpi/ic_launcher.png b/app/src/main/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000..288b665 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_launcher.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_launcher.png b/app/src/main/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000..6ae570b Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_launcher.png differ diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 0000000..1f6bb29 --- /dev/null +++ b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,34 @@ + + + + + + + + + + + diff --git a/app/src/main/res/drawable-xhdpi/ic_launcher.png b/app/src/main/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000..d4fb7cd Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_launcher.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/app/src/main/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..85a6081 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/app/src/main/res/drawable/bg.png b/app/src/main/res/drawable/bg.png new file mode 100644 index 0000000..a55b68e Binary files /dev/null and b/app/src/main/res/drawable/bg.png differ diff --git a/app/src/main/res/drawable/bg_home.xml b/app/src/main/res/drawable/bg_home.xml new file mode 100644 index 0000000..8faf967 --- /dev/null +++ b/app/src/main/res/drawable/bg_home.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_number_window.xml b/app/src/main/res/drawable/bg_number_window.xml new file mode 100644 index 0000000..e1a47e1 --- /dev/null +++ b/app/src/main/res/drawable/bg_number_window.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_home.png b/app/src/main/res/drawable/ic_home.png new file mode 100644 index 0000000..c70110d Binary files /dev/null and b/app/src/main/res/drawable/ic_home.png differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..0d025f9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/logo.png b/app/src/main/res/drawable/logo.png new file mode 100644 index 0000000..ce74975 Binary files /dev/null and b/app/src/main/res/drawable/logo.png differ diff --git a/app/src/main/res/font/bebas.ttf b/app/src/main/res/font/bebas.ttf new file mode 100644 index 0000000..46b3eb9 Binary files /dev/null and b/app/src/main/res/font/bebas.ttf differ diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/activity_home.xml new file mode 100644 index 0000000..e82ef3a --- /dev/null +++ b/app/src/main/res/layout/activity_home.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/adapter_item.xml b/app/src/main/res/layout/adapter_item.xml new file mode 100644 index 0000000..eb80156 --- /dev/null +++ b/app/src/main/res/layout/adapter_item.xml @@ -0,0 +1,48 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/home.xml b/app/src/main/res/layout/home.xml new file mode 100644 index 0000000..fe9d610 --- /dev/null +++ b/app/src/main/res/layout/home.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + +