import React from 'react'; import { Button, PermissionsAndroid, Platform, ScrollView, Text, TextInput, View } from 'react-native'; import { InterfaceType, StarConnectionSettings, StarPrinter } from 'react-native-star-print'; import { Picker } from '@react-native-picker/picker'; interface AppProps { } interface AppState { interfaceType: InterfaceType; identifier: string; statusText: string; } class App extends React.Component { private _onPressGetStatusButton = async() => { var settings = new StarConnectionSettings(); settings.interfaceType = this.state.interfaceType; settings.identifier = this.state.identifier; // settings.autoSwitchInterface = true; // If you are using Android 12 and targetSdkVersion is 31 or later, // you have to request Bluetooth permission (Nearby devices permission) to use the Bluetooth printer. // https://developer.android.com/about/versions/12/features/bluetooth-permissions if (Platform.OS == 'android' && 31 <= Platform.Version) { if (this.state.interfaceType == InterfaceType.Bluetooth || settings.autoSwitchInterface == true) { var hasPermission = await this._confirmBluetoothPermission(); if (!hasPermission) { console.log(`PERMISSION ERROR: You have to allow Nearby devices to use the Bluetooth printer`); return; } } } var printer = new StarPrinter(settings); try { await printer.open(); var status = await printer.getStatus(); console.log(`Has Error: ${String(status.hasError)}`); console.log(`Paper Empty: ${String(status.paperEmpty)}`); console.log(`Paper Near Empty: ${String(status.paperNearEmpty)}`); console.log(`Cover Open: ${String(status.coverOpen)}`); console.log(`Drawer Open Close Signal: ${String(status.drawerOpenCloseSignal)}`); const statusText = this.state.statusText + `Has Error: ${String(status.hasError)}\n` + `Paper Empty: ${String(status.paperEmpty)}\n` + `Paper Near Empty: ${String(status.paperNearEmpty)}\n` + `Cover Open: ${String(status.coverOpen)}\n` + `Drawer Open Close Signal: ${String(status.drawerOpenCloseSignal)}\n` + '\n'; this.setState({statusText: statusText}); } catch(error) { console.log(`Error: ${String(error)}`); this.setState({statusText: this.state.statusText + `Error: ${String(error)}\n\n`}); } finally { await printer.close(); await printer.dispose(); } } private async _confirmBluetoothPermission(): Promise { var hasPermission = false; try { hasPermission = await PermissionsAndroid.check(PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT); if (!hasPermission) { const status = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.BLUETOOTH_CONNECT); hasPermission = status == PermissionsAndroid.RESULTS.GRANTED; } } catch (err) { console.warn(err); } return hasPermission; } constructor(props: any) { super(props); this.state = { interfaceType: InterfaceType.Lan, identifier: '00:11:62:00:00:00', statusText: '', }; } render() { return ( Interface { this.setState({ interfaceType: value }); }}> Identifier { this.setState({ identifier: value }); }} />