feature():新增对android的支持

This commit is contained in:
lvwang2002 2024-04-29 18:57:13 +08:00
parent d25c64ea51
commit 7fdfa32201
8 changed files with 21130 additions and 5 deletions

19
Glucose_calculation_array.h Executable file
View File

@ -0,0 +1,19 @@
/*******************struct bloodmember***********************
BLOODMEMBER[0]Bagnumber//当前包号
BLOODMEMBER[1]Current//当前蓝牙原始电流
BLOODMEMBER[2]Real_fix_current//待函数返回计算的电流修正值;
BLOODMEMBER[3]Before_fix_current//前一个包的Real_fix_current
BLOODMEMBER[4]Reference_k//参比系数第一个参比之前为0每次有参比输入后会更新一次
BLOODMEMBER[5]Reference_bloodsugar//当前包输入的参比血糖值当前包没有输入参比血糖时应为0放大10倍保存
BLOODMEMBER[6]Real_B//未有参比输入时应为0每次有参比输入后会更新一次
BLOODMEMBER[7]Blood_sugar//待函数返回计算的值未计算时为0放大10倍保存
//函数返回计算后的数组;
uint16 * Glucose_calculation(uint16 A[] ){
return BLOODMEMBER;
}
*********************struct bloodmember*********************/
typedef unsigned short uint16; /* Unsigned 16 bit value */
uint16 BLOODMEMBER[8];

View File

@ -82,5 +82,6 @@ dependencies {
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
//noinspection GradleDynamicVersion
implementation "com.facebook.react:react-native:+"
implementation "org.apache.commons:commons-lang3:3.5"
}

View File

@ -1,2 +1,16 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<!-- Needed only if your app looks for Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"
tools:ignore="ProtectedPermissions" />
</manifest>

View File

@ -2,6 +2,7 @@ package com.btdevice;
import androidx.annotation.NonNull;
import com.device.comm.mylibrary.RNMethodModule;
import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
@ -17,6 +18,7 @@ public class BtDevicePackage implements ReactPackage {
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new BtDeviceModule(reactContext));
modules.add(new RNMethodModule(reactContext));
return modules;
}

View File

@ -1,6 +1,20 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH"
android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="30" />
<!-- Needed only if your app looks for Bluetooth devices. -->
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED"
tools:ignore="ProtectedPermissions" />
<application
android:name=".MainApplication"

View File

@ -1,22 +1,77 @@
package com.btdeviceexample
import android.Manifest.permission.ACCESS_COARSE_LOCATION
import android.Manifest.permission.ACCESS_FINE_LOCATION
import android.Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS
import android.Manifest.permission.BLUETOOTH_CONNECT
import android.Manifest.permission.BLUETOOTH_PRIVILEGED
import android.Manifest.permission.BLUETOOTH_SCAN
import android.Manifest.permission.READ_EXTERNAL_STORAGE
import android.Manifest.permission.WRITE_EXTERNAL_STORAGE
import android.content.pm.PackageManager
import android.os.Bundle
import android.os.PersistableBundle
import androidx.core.app.ActivityCompat
import com.facebook.react.ReactActivity
import com.facebook.react.ReactActivityDelegate
import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.fabricEnabled
import com.facebook.react.defaults.DefaultReactActivityDelegate
class MainActivity : ReactActivity() {
/**
* Returns the name of the main component registered from JavaScript. This is used to schedule
* rendering of the component.
*/
private var PERMISSIONS_STORAGE: Array<String> = arrayOf<String>(
READ_EXTERNAL_STORAGE,
WRITE_EXTERNAL_STORAGE,
ACCESS_FINE_LOCATION,
ACCESS_COARSE_LOCATION,
ACCESS_LOCATION_EXTRA_COMMANDS,
BLUETOOTH_SCAN,
BLUETOOTH_CONNECT,
BLUETOOTH_PRIVILEGED
)
private val PERMISSIONS_LOCATION = arrayOf<String>(
ACCESS_FINE_LOCATION,
ACCESS_COARSE_LOCATION,
ACCESS_LOCATION_EXTRA_COMMANDS,
BLUETOOTH_SCAN,
BLUETOOTH_CONNECT,
BLUETOOTH_PRIVILEGED
)
override fun getMainComponentName(): String = "BtDeviceExample"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkPermissions()
}
/**
* Returns the instance of the [ReactActivityDelegate]. We use [DefaultReactActivityDelegate]
* which allows you to enable New Architecture with a single boolean flags [fabricEnabled]
*/
override fun createReactActivityDelegate(): ReactActivityDelegate =
DefaultReactActivityDelegate(this, mainComponentName, fabricEnabled)
private fun checkPermissions() {
val permission1 = ActivityCompat.checkSelfPermission(this, WRITE_EXTERNAL_STORAGE)
val permission2 = ActivityCompat.checkSelfPermission(this, BLUETOOTH_SCAN)
if (permission1 != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
this,
PERMISSIONS_STORAGE,
1
)
} else if (permission2 != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
PERMISSIONS_LOCATION,
1
)
}
}
}

View File

@ -1,13 +1,14 @@
import * as React from 'react';
import { StyleSheet, View, Text } from 'react-native';
import RNMethodModule from 'react-native-bt-device';
import RNMethodModule,{DYGlucoseDriver} from 'react-native-bt-device';
export default function App() {
// const [result, setResult] = React.useState<number | undefined>();
React.useEffect(() => {
RNMethodModule.startBLEScan()
React.useEffect( () => {
RNMethodModule.connectSingleDevice('abc')
DYGlucoseDriver.startMonitor('abc')
// multiply(3, 7).then(setResult);
}, []);

21019
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff