New file |
| | |
| | | plugins { |
| | | id 'com.android.application' |
| | | } |
| | | |
| | | android { |
| | | compileSdkVersion 31 |
| | | defaultConfig { |
| | | applicationId "com.hdl.onproumengsdk" |
| | | minSdkVersion 23 |
| | | targetSdkVersion 31 |
| | | versionCode 1 |
| | | versionName "1.0" |
| | | |
| | | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" |
| | | } |
| | | |
| | | compileOptions { |
| | | sourceCompatibility JavaVersion.VERSION_1_8 |
| | | targetCompatibility JavaVersion.VERSION_1_8 |
| | | } |
| | | buildTypes { |
| | | release { |
| | | minifyEnabled false |
| | | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' |
| | | } |
| | | debug { |
| | | minifyEnabled false |
| | | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' |
| | | } |
| | | } |
| | | compileOptions { |
| | | sourceCompatibility JavaVersion.VERSION_1_8 |
| | | targetCompatibility JavaVersion.VERSION_1_8 |
| | | } |
| | | buildFeatures { |
| | | viewBinding true |
| | | } |
| | | } |
| | | |
| | | dependencies { |
| | | |
| | | implementation fileTree(includes: ['*.jar','*.aar'],dir: 'libs') |
| | | implementation 'androidx.appcompat:appcompat:1.3.1' |
| | | implementation 'com.google.android.material:material:1.4.0' |
| | | implementation 'androidx.constraintlayout:constraintlayout:2.1.1' |
| | | implementation 'androidx.navigation:navigation-fragment:2.3.5' |
| | | implementation 'androidx.navigation:navigation-ui:2.3.5' |
| | | // implementation project(path: ':umsdk') |
| | | // implementation project(path: ':zxingScan') |
| | | testImplementation 'junit:junit:4.+' |
| | | androidTestImplementation 'androidx.test.ext:junit:1.1.2' |
| | | androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' |
| | | |
| | | |
| | | } |
New file |
| | |
| | | # 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 |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| | | package="com.hdl.onproumengsdk" |
| | | xmlns:tools="http://schemas.android.com/tools"> |
| | | |
| | | <uses-sdk android:minSdkVersion="8" /> |
| | | |
| | | <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
| | | <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> |
| | | <uses-permission android:name="android.permission.READ_PHONE_STATE" /> |
| | | <uses-permission android:name="android.permission.INTERNET" /> |
| | | |
| | | <!-- <!–拍照–>--> |
| | | <!-- <uses-permission android:name="android.permission.CAMERA" />--> |
| | | <!-- <!–写入SD卡的权限:如果你希望保存相机拍照后的照片–>--> |
| | | <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />--> |
| | | <!-- <!–读取SD卡的权限:打开相册选取图片所必须的权限–>--> |
| | | <!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />--> |
| | | <!-- <!–网络–>--> |
| | | <!-- <uses-permission android:name="android.permission.INTERNET"/>--> |
| | | |
| | | |
| | | <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/Theme.OnproUmengSdk"> |
| | | |
| | | |
| | | <!-- <!– 调整二维码扫描界面方向为"完全依赖传感器" –>--> |
| | | <activity |
| | | android:name="com.journeyapps.barcodescanner.CaptureActivity" |
| | | android:screenOrientation="fullSensor" |
| | | tools:replace="screenOrientation" /> |
| | | |
| | | |
| | | <activity |
| | | android:name=".Test" |
| | | android:exported="false" /> |
| | | <activity |
| | | android:name=".MainActivity" |
| | | android:exported="true" |
| | | android:label="@string/app_name" |
| | | android:theme="@style/Theme.OnproUmengSdk.NoActionBar" |
| | | > |
| | | <intent-filter> |
| | | <action android:name="android.intent.action.MAIN" /> |
| | | |
| | | <category android:name="android.intent.category.LAUNCHER" /> |
| | | |
| | | </intent-filter> |
| | | //友盟 |
| | | <intent-filter> |
| | | <action android:name="android.intent.action.VIEW" /> |
| | | |
| | | <category android:name="android.intent.category.DEFAULT" /> |
| | | <category android:name="android.intent.category.BROWSABLE" /> |
| | | |
| | | <data android:scheme="um.61d565d9e0f9bb492bbc3d5a" /> |
| | | </intent-filter> |
| | | </activity> |
| | | </application> |
| | | |
| | | </manifest> |
New file |
| | |
| | | package com.hdl.onproumengsdk; |
| | | |
| | | import android.os.Bundle; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.fragment.app.Fragment; |
| | | import androidx.navigation.fragment.NavHostFragment; |
| | | |
| | | import com.hdl.onproumengsdk.databinding.FragmentFirstBinding; |
| | | |
| | | public class FirstFragment extends Fragment { |
| | | |
| | | private FragmentFirstBinding binding; |
| | | |
| | | @Override |
| | | public View onCreateView( |
| | | LayoutInflater inflater, ViewGroup container, |
| | | Bundle savedInstanceState |
| | | ) { |
| | | |
| | | binding = FragmentFirstBinding.inflate(inflater, container, false); |
| | | return binding.getRoot(); |
| | | |
| | | } |
| | | |
| | | public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { |
| | | super.onViewCreated(view, savedInstanceState); |
| | | |
| | | binding.buttonFirst.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | NavHostFragment.findNavController(FirstFragment.this) |
| | | .navigate(R.id.action_FirstFragment_to_SecondFragment); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onDestroyView() { |
| | | super.onDestroyView(); |
| | | binding = null; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.hdl.onproumengsdk; |
| | | |
| | | import android.content.Intent; |
| | | import android.os.Bundle; |
| | | import android.widget.Toast; |
| | | |
| | | import androidx.appcompat.app.AppCompatActivity; |
| | | |
| | | import com.google.zxing.integration.android.IntentIntegrator; |
| | | import com.google.zxing.integration.android.IntentResult; |
| | | import com.hdl.onproumengsdk.databinding.ActivityMainBinding; |
| | | import com.hdl.zxingscan.ScanSdkUtils; |
| | | |
| | | |
| | | public class MainActivity extends AppCompatActivity { |
| | | |
| | | private ActivityMainBinding binding; |
| | | |
| | | |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | |
| | | //友盟 |
| | | // UmSdk.initUmSdk(this,"61d565d9e0f9bb492bbc3d5a","android"); |
| | | // UmSdk.initUMConfigure(this,"61d565d9e0f9bb492bbc3d5a","android",""); |
| | | |
| | | |
| | | binding = ActivityMainBinding.inflate(getLayoutInflater()); |
| | | setContentView(binding.getRoot()); |
| | | |
| | | ScanSdkUtils ssu = new ScanSdkUtils(this); |
| | | ssu.OpenScan(); |
| | | // ssu.startScanActivity(this); |
| | | // Intent intent = new Intent(MainActivity.this, CaptureActivity.class); |
| | | // startActivity(intent); |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | protected void onActivityResult(int requestCode, int resultCode, Intent data) { |
| | | // 获取解析结果 |
| | | IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); |
| | | if (result != null) { |
| | | if (result.getContents() == null) { |
| | | Toast.makeText(this, "取消扫描", Toast.LENGTH_LONG).show(); |
| | | } else { |
| | | Toast.makeText(this, "扫描内容:" + result.getContents(), Toast.LENGTH_LONG).show(); |
| | | } |
| | | } else { |
| | | super.onActivityResult(requestCode, resultCode, data); |
| | | } |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.hdl.onproumengsdk; |
| | | |
| | | import android.os.Bundle; |
| | | import android.view.LayoutInflater; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.fragment.app.Fragment; |
| | | import androidx.navigation.fragment.NavHostFragment; |
| | | |
| | | import com.hdl.onproumengsdk.databinding.FragmentSecondBinding; |
| | | |
| | | public class SecondFragment extends Fragment { |
| | | |
| | | private FragmentSecondBinding binding; |
| | | |
| | | @Override |
| | | public View onCreateView( |
| | | LayoutInflater inflater, ViewGroup container, |
| | | Bundle savedInstanceState |
| | | ) { |
| | | |
| | | binding = FragmentSecondBinding.inflate(inflater, container, false); |
| | | return binding.getRoot(); |
| | | |
| | | } |
| | | |
| | | public void onViewCreated(@NonNull View view, Bundle savedInstanceState) { |
| | | super.onViewCreated(view, savedInstanceState); |
| | | |
| | | binding.buttonSecond.setOnClickListener(new View.OnClickListener() { |
| | | @Override |
| | | public void onClick(View view) { |
| | | NavHostFragment.findNavController(SecondFragment.this) |
| | | .navigate(R.id.action_SecondFragment_to_FirstFragment); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | @Override |
| | | public void onDestroyView() { |
| | | super.onDestroyView(); |
| | | binding = null; |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | package com.hdl.onproumengsdk; |
| | | |
| | | import androidx.annotation.NonNull; |
| | | import androidx.appcompat.app.AppCompatActivity; |
| | | |
| | | import android.os.Bundle; |
| | | import android.view.KeyEvent; |
| | | |
| | | import com.journeyapps.barcodescanner.CaptureManager; |
| | | import com.journeyapps.barcodescanner.DecoratedBarcodeView; |
| | | |
| | | public class Test extends AppCompatActivity { |
| | | |
| | | /** |
| | | * 条形码扫描管理器 |
| | | */ |
| | | private CaptureManager mCaptureManager; |
| | | |
| | | /** |
| | | * 条形码扫描视图 |
| | | */ |
| | | private DecoratedBarcodeView mBarcodeView; |
| | | |
| | | @Override |
| | | protected void onCreate(Bundle savedInstanceState) { |
| | | super.onCreate(savedInstanceState); |
| | | |
| | | setContentView(com.google.zxing.client.android.R.layout.zxing_capture); |
| | | mBarcodeView = (DecoratedBarcodeView)findViewById(com.google.zxing.client.android.R.id.zxing_barcode_scanner); |
| | | |
| | | mCaptureManager = new CaptureManager(this, mBarcodeView); |
| | | mCaptureManager.initializeFromIntent(getIntent(), savedInstanceState); |
| | | mCaptureManager.decode(); |
| | | } |
| | | |
| | | @Override |
| | | protected void onResume() { |
| | | super.onResume(); |
| | | mCaptureManager.onResume(); |
| | | } |
| | | |
| | | @Override |
| | | protected void onPause() { |
| | | super.onPause(); |
| | | mCaptureManager.onPause(); |
| | | } |
| | | |
| | | @Override |
| | | protected void onDestroy() { |
| | | super.onDestroy(); |
| | | mCaptureManager.onDestroy(); |
| | | } |
| | | |
| | | @Override |
| | | protected void onSaveInstanceState(Bundle outState) { |
| | | super.onSaveInstanceState(outState); |
| | | mCaptureManager.onSaveInstanceState(outState); |
| | | } |
| | | |
| | | /** |
| | | * 权限处理 |
| | | */ |
| | | @Override |
| | | public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { |
| | | super.onRequestPermissionsResult(requestCode, permissions, grantResults); |
| | | mCaptureManager.onRequestPermissionsResult(requestCode, permissions, grantResults); |
| | | } |
| | | |
| | | /** |
| | | * 按键处理 |
| | | */ |
| | | @Override |
| | | public boolean onKeyDown(int keyCode, KeyEvent event) { |
| | | return mBarcodeView.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); |
| | | } |
| | | } |
New file |
| | |
| | | <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:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z"> |
| | | <aapt:attr name="android:fillColor"> |
| | | <gradient |
| | | android:endX="85.84757" |
| | | android:endY="92.4963" |
| | | android:startX="42.9492" |
| | | android:startY="49.59793" |
| | | 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="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z" |
| | | android:strokeWidth="1" |
| | | android:strokeColor="#00000000" /> |
| | | </vector> |
New file |
| | |
| | | <?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="#3DDC84" |
| | | 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> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | tools:context=".MainActivity"> |
| | | |
| | | </androidx.coordinatorlayout.widget.CoordinatorLayout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | android:background="#FF0000" |
| | | tools:context=".Test"> |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | app:layout_behavior="@string/appbar_scrolling_view_behavior"> |
| | | |
| | | <fragment |
| | | android:id="@+id/nav_host_fragment_content_main" |
| | | android:name="androidx.navigation.fragment.NavHostFragment" |
| | | android:layout_width="0dp" |
| | | android:layout_height="0dp" |
| | | app:defaultNavHost="true" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintLeft_toLeftOf="parent" |
| | | app:layout_constraintRight_toRightOf="parent" |
| | | app:layout_constraintTop_toTopOf="parent" |
| | | app:navGraph="@navigation/nav_graph" /> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | tools:context=".FirstFragment"> |
| | | |
| | | <TextView |
| | | android:id="@+id/textview_first" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@string/hello_first_fragment" |
| | | app:layout_constraintBottom_toTopOf="@id/button_first" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toTopOf="parent" /> |
| | | |
| | | <Button |
| | | android:id="@+id/button_first" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@string/next" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/textview_first" /> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | tools:context=".SecondFragment"> |
| | | |
| | | <TextView |
| | | android:id="@+id/textview_second" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | app:layout_constraintBottom_toTopOf="@id/button_second" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toTopOf="parent" /> |
| | | |
| | | <Button |
| | | android:id="@+id/button_second" |
| | | android:layout_width="wrap_content" |
| | | android:layout_height="wrap_content" |
| | | android:text="@string/previous" |
| | | app:layout_constraintBottom_toBottomOf="parent" |
| | | app:layout_constraintEnd_toEndOf="parent" |
| | | app:layout_constraintStart_toStartOf="parent" |
| | | app:layout_constraintTop_toBottomOf="@id/textview_second" /> |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
New file |
| | |
| | | <menu xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | tools:context="com.hdl.onproumengsdk.MainActivity"> |
| | | <item |
| | | android:id="@+id/action_settings" |
| | | android:orderInCategory="100" |
| | | android:title="@string/action_settings" |
| | | app:showAsAction="never" /> |
| | | </menu> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?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> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <navigation xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:id="@+id/nav_graph" |
| | | app:startDestination="@id/FirstFragment"> |
| | | |
| | | <fragment |
| | | android:id="@+id/FirstFragment" |
| | | android:name="com.hdl.onproumengsdk.FirstFragment" |
| | | android:label="@string/first_fragment_label" |
| | | tools:layout="@layout/fragment_first"> |
| | | |
| | | <action |
| | | android:id="@+id/action_FirstFragment_to_SecondFragment" |
| | | app:destination="@id/SecondFragment" /> |
| | | </fragment> |
| | | <fragment |
| | | android:id="@+id/SecondFragment" |
| | | android:name="com.hdl.onproumengsdk.SecondFragment" |
| | | android:label="@string/second_fragment_label" |
| | | tools:layout="@layout/fragment_second"> |
| | | |
| | | <action |
| | | android:id="@+id/action_SecondFragment_to_FirstFragment" |
| | | app:destination="@id/FirstFragment" /> |
| | | </fragment> |
| | | </navigation> |
New file |
| | |
| | | <resources> |
| | | <dimen name="fab_margin">48dp</dimen> |
| | | </resources> |
New file |
| | |
| | | <resources xmlns:tools="http://schemas.android.com/tools"> |
| | | <!-- Base application theme. --> |
| | | <style name="Theme.OnproUmengSdk" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> |
| | | <!-- Primary brand color. --> |
| | | <item name="colorPrimary">@color/purple_200</item> |
| | | <item name="colorPrimaryVariant">@color/purple_700</item> |
| | | <item name="colorOnPrimary">@color/black</item> |
| | | <!-- Secondary brand color. --> |
| | | <item name="colorSecondary">@color/teal_200</item> |
| | | <item name="colorSecondaryVariant">@color/teal_200</item> |
| | | <item name="colorOnSecondary">@color/black</item> |
| | | <!-- Status bar color. --> |
| | | <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> |
| | | <!-- Customize your theme here. --> |
| | | </style> |
| | | </resources> |
New file |
| | |
| | | <resources> |
| | | <dimen name="fab_margin">200dp</dimen> |
| | | </resources> |
New file |
| | |
| | | <resources> |
| | | <dimen name="fab_margin">48dp</dimen> |
| | | </resources> |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <resources> |
| | | <color name="purple_200">#FFBB86FC</color> |
| | | <color name="purple_500">#FF6200EE</color> |
| | | <color name="purple_700">#FF3700B3</color> |
| | | <color name="teal_200">#FF03DAC5</color> |
| | | <color name="teal_700">#FF018786</color> |
| | | <color name="black">#FF000000</color> |
| | | <color name="white">#FFFFFFFF</color> |
| | | </resources> |
New file |
| | |
| | | <resources> |
| | | <dimen name="fab_margin">16dp</dimen> |
| | | </resources> |
New file |
| | |
| | | <resources> |
| | | <string name="app_name">OnproUmengSdk</string> |
| | | <string name="action_settings">Settings</string> |
| | | <!-- Strings used for fragments for navigation --> |
| | | <string name="first_fragment_label">First Fragment</string> |
| | | <string name="second_fragment_label">Second Fragment</string> |
| | | <string name="next">Next</string> |
| | | <string name="previous">Previous</string> |
| | | |
| | | <string name="hello_first_fragment">Hello first fragment</string> |
| | | <string name="hello_second_fragment">Hello second fragment. Arg: %1$s</string> |
| | | </resources> |
New file |
| | |
| | | <resources xmlns:tools="http://schemas.android.com/tools"> |
| | | <!-- Base application theme. --> |
| | | <style name="Theme.OnproUmengSdk" parent="Theme.MaterialComponents.DayNight.DarkActionBar"> |
| | | <!-- Primary brand color. --> |
| | | <item name="colorPrimary">@color/purple_500</item> |
| | | <item name="colorPrimaryVariant">@color/purple_700</item> |
| | | <item name="colorOnPrimary">@color/white</item> |
| | | <!-- Secondary brand color. --> |
| | | <item name="colorSecondary">@color/teal_200</item> |
| | | <item name="colorSecondaryVariant">@color/teal_700</item> |
| | | <item name="colorOnSecondary">@color/black</item> |
| | | <!-- Status bar color. --> |
| | | <item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item> |
| | | <!-- Customize your theme here. --> |
| | | </style> |
| | | |
| | | <style name="Theme.OnproUmengSdk.NoActionBar"> |
| | | <item name="windowActionBar">false</item> |
| | | <item name="windowNoTitle">true</item> |
| | | </style> |
| | | |
| | | <style name="Theme.OnproUmengSdk.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> |
| | | |
| | | <style name="Theme.OnproUmengSdk.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> |
| | | </resources> |
New file |
| | |
| | | buildscript { |
| | | repositories { |
| | | google() |
| | | jcenter() |
| | | mavenCentral() |
| | | maven { |
| | | url "https://jitpack.io" |
| | | } |
| | | } |
| | | dependencies { |
| | | classpath "com.android.tools.build:gradle:4.2.2" |
| | | classpath 'com.kezong:fat-aar:1.2.16' |
| | | } |
| | | } |
| | | |
| | | allprojects { |
| | | repositories { |
| | | flatDir{ |
| | | dirs 'libs' |
| | | } |
| | | google() |
| | | jcenter() |
| | | mavenCentral() |
| | | maven { url "https://jitpack.io" } |
| | | maven { url = uri("https://plugins.gradle.org/m2/") } |
| | | |
| | | } |
| | | } |
| | | |
| | | task clean(type: Delete) { |
| | | delete rootProject.buildDir |
| | | } |
New file |
| | |
| | | # 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=-Xmx2048m -Dfile.encoding=UTF-8 |
| | | # 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 |
| | | # AndroidX package structure to make it clearer which packages are bundled with the |
| | | # Android operating system, and which are packaged with your app"s APK |
| | | # https://developer.android.com/topic/libraries/support-library/androidx-rn |
| | | android.useAndroidX=true |
| | | # Automatically convert third-party libraries to use AndroidX |
| | | android.enableJetifier=true |
New file |
| | |
| | | #Wed Sep 22 11:14:15 GMT+08:00 2021 |
| | | distributionBase=GRADLE_USER_HOME |
| | | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip |
| | | distributionPath=wrapper/dists |
| | | zipStorePath=wrapper/dists |
| | | zipStoreBase=GRADLE_USER_HOME |
New file |
| | |
| | | #!/usr/bin/env sh |
| | | |
| | | # |
| | | # Copyright 2015 the original author or authors. |
| | | # |
| | | # Licensed under the Apache License, Version 2.0 (the "License"); |
| | | # you may not use this file except in compliance with the License. |
| | | # You may obtain a copy of the License at |
| | | # |
| | | # https://www.apache.org/licenses/LICENSE-2.0 |
| | | # |
| | | # Unless required by applicable law or agreed to in writing, software |
| | | # distributed under the License is distributed on an "AS IS" BASIS, |
| | | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| | | # See the License for the specific language governing permissions and |
| | | # limitations under the License. |
| | | # |
| | | |
| | | ############################################################################## |
| | | ## |
| | | ## 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='"-Xmx64m" "-Xms64m"' |
| | | |
| | | # 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 or MSYS, switch paths to Windows format before running java |
| | | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; 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=`expr $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" |
| | | |
| | | exec "$JAVACMD" "$@" |
New file |
| | |
| | | @rem
|
| | | @rem Copyright 2015 the original author or authors.
|
| | | @rem
|
| | | @rem Licensed under the Apache License, Version 2.0 (the "License");
|
| | | @rem you may not use this file except in compliance with the License.
|
| | | @rem You may obtain a copy of the License at
|
| | | @rem
|
| | | @rem https://www.apache.org/licenses/LICENSE-2.0
|
| | | @rem
|
| | | @rem Unless required by applicable law or agreed to in writing, software
|
| | | @rem distributed under the License is distributed on an "AS IS" BASIS,
|
| | | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| | | @rem See the License for the specific language governing permissions and
|
| | | @rem limitations under the License.
|
| | | @rem
|
| | |
|
| | | @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 Resolve any "." and ".." in APP_HOME to make it shorter.
|
| | | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
| | |
|
| | | @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="-Xmx64m" "-Xms64m"
|
| | |
|
| | | @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 execute
|
| | |
|
| | | 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 execute
|
| | |
|
| | | 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
|
| | |
|
| | | :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 %*
|
| | |
|
| | | :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
|
New file |
| | |
| | | ## This file must *NOT* be checked into Version Control Systems,
|
| | | # as it contains information specific to your local configuration.
|
| | | #
|
| | | # Location of the SDK. This is only used by Gradle.
|
| | | # For customization when using a Version Control System, please read the
|
| | | # header note.
|
| | | #Mon Jan 10 10:04:25 CST 2022
|
| | | sdk.dir=/Users/kaede/Library/Developer/Xamarin/android-sdk-macosx
|
| | |
|
New file |
| | |
| | | |
| | | |
| | | rootProject.name = "OnproUmengSdk" |
| | | include ':app' |
| | | include ':umsdk' |
| | | include ':zxingScan' |
New file |
| | |
| | | plugins { |
| | | id 'com.android.library' |
| | | } |
| | | apply plugin: 'com.kezong.fat-aar' |
| | | |
| | | //apply from: 'https://raw.githubusercontent.com/adwiv/android-fat-aar/master/fat-aar.gradle' |
| | | |
| | | android { |
| | | compileSdkVersion 31 |
| | | |
| | | defaultConfig { |
| | | minSdkVersion 23 |
| | | targetSdkVersion 31 |
| | | versionCode 1 |
| | | versionName "1.0" |
| | | |
| | | testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" |
| | | consumerProguardFiles "consumer-rules.pro" |
| | | } |
| | | |
| | | buildTypes { |
| | | release { |
| | | minifyEnabled false |
| | | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' |
| | | } |
| | | } |
| | | compileOptions { |
| | | sourceCompatibility JavaVersion.VERSION_1_8 |
| | | targetCompatibility JavaVersion.VERSION_1_8 |
| | | } |
| | | } |
| | | |
| | | dependencies { |
| | | |
| | | // implementation 'androidx.appcompat:appcompat:1.2.0' |
| | | // implementation 'com.google.android.material:material:1.3.0' |
| | | // testImplementation 'junit:junit:4.+' |
| | | // androidTestImplementation 'androidx.test.ext:junit:1.1.2' |
| | | // androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' |
| | | |
| | | // compile fileTree(include:['*.jar'], dir:'libs') |
| | | implementation fileTree(dir: 'libs', include: ['*.jar']) |
| | | |
| | | // 下面各SDK根据宿主App是否使用相关业务按需引入。 |
| | | // 友盟统计SDK |
| | | embed 'com.umeng.umsdk:common:9.4.4'// 必选 |
| | | embed 'com.umeng.umsdk:asms:1.4.1'// 必选 |
| | | // embed 'com.umeng.umsdk:apm:1.5.2' // 错误分析升级为独立SDK,看crash数据请一定集成,可选 |
| | | // embed 'com.umeng.umsdk:abtest:1.0.0'//使用U-App中ABTest能力,可选 |
| | | } |
New file |
| | |
| | | # 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 |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| | | package="com.hdl.umsdk"> |
| | | |
| | | </manifest> |
New file |
| | |
| | | package com.hdl.umsdk; |
| | | |
| | | import android.content.Context; |
| | | |
| | | import com.umeng.commonsdk.UMConfigure; |
| | | |
| | | public class UmSdk { |
| | | |
| | | /* |
| | | * 初始化友盟SDK |
| | | * */ |
| | | public static void initUmSdk(Context context, String appkey, String channel){ |
| | | UMConfigure.preInit(context,appkey,channel); |
| | | } |
| | | |
| | | /** |
| | | * 注意: 即使您已经在AndroidManifest.xml中配置过appkey和channel值,也需要在App代码中调 |
| | | * 用初始化接口(如需要使用AndroidManifest.xml中配置好的appkey和channel值, |
| | | * UMConfigure.init调用中appkey和channel参数请置为null)。 |
| | | */ |
| | | public static void initUMConfigure(Context context,String appkey,String channel,String pushSecret){ |
| | | UMConfigure.init(context, appkey, channel, UMConfigure.DEVICE_TYPE_PHONE, pushSecret); |
| | | } |
| | | |
| | | public static void onKillProcess(Context context){ |
| | | onKillProcess(context); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | plugins { |
| | | id 'com.android.library' |
| | | } |
| | | |
| | | apply plugin: 'com.kezong.fat-aar' |
| | | |
| | | android { |
| | | compileSdkVersion 31 |
| | | |
| | | defaultConfig { |
| | | minSdkVersion 23 |
| | | targetSdkVersion 31 |
| | | versionCode 1 |
| | | versionName "1.0" |
| | | |
| | | consumerProguardFiles "consumer-rules.pro" |
| | | } |
| | | |
| | | buildTypes { |
| | | release { |
| | | minifyEnabled false |
| | | proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' |
| | | } |
| | | } |
| | | compileOptions { |
| | | sourceCompatibility JavaVersion.VERSION_1_8 |
| | | targetCompatibility JavaVersion.VERSION_1_8 |
| | | } |
| | | } |
| | | |
| | | dependencies { |
| | | |
| | | // implementation 'androidx.appcompat:appcompat:1.2.0' |
| | | // implementation 'com.google.android.material:material:1.3.0' |
| | | // testImplementation 'junit:junit:4.+' |
| | | // androidTestImplementation 'androidx.test.ext:junit:1.1.2' |
| | | // androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' |
| | | // embed 'com.github.yuzhiqiang1993:zxing:2.2.8' |
| | | |
| | | // implementation fileTree(dir: 'libs', include: ['*.jar']) |
| | | // implementation 'androidx.appcompat:appcompat:1.2.0' |
| | | // implementation 'com.google.android.material:material:1.3.0' |
| | | // implementation 'androidx.constraintlayout:constraintlayout:2.0.4' |
| | | embed 'com.journeyapps:zxing-android-embedded:3.5.0' |
| | | |
| | | } |
New file |
| | |
| | | # 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 |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | package="com.hdl.zxingscan"> |
| | | |
| | | </manifest> |
New file |
| | |
| | | package com.hdl.zxingscan; |
| | | |
| | | import android.app.Activity; |
| | | import android.content.Context; |
| | | import android.content.Intent; |
| | | import android.content.pm.ActivityInfo; |
| | | |
| | | import com.google.zxing.integration.android.IntentIntegrator; |
| | | |
| | | public class ScanSdkUtils { |
| | | |
| | | public IntentIntegrator intentIntegrator; |
| | | |
| | | public ScanSdkUtils(Context context){ |
| | | // 创建IntentIntegrator对象 |
| | | intentIntegrator = new IntentIntegrator( ((Activity)context)); |
| | | intentIntegrator.setOrientationLocked(false); |
| | | } |
| | | |
| | | public void openScan(){ |
| | | intentIntegrator.initiateScan(); |
| | | } |
| | | |
| | | public void setActivity(Class activity) |
| | | { |
| | | intentIntegrator.setCaptureActivity(activity); |
| | | } |
| | | |
| | | public void setPrompt(String prompt){ |
| | | intentIntegrator.setPrompt(prompt); |
| | | } |
| | | |
| | | } |
New file |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" |
| | | xmlns:app="http://schemas.android.com/apk/res-auto" |
| | | xmlns:tools="http://schemas.android.com/tools" |
| | | android:layout_width="match_parent" |
| | | android:layout_height="match_parent" |
| | | tools:context=".CustomCaptureActivity"> |
| | | |
| | | </androidx.constraintlayout.widget.ConstraintLayout> |
New file |
| | |
| | | <resources></resources> |