react-native-fz-n1
v1.0.1
Published
React Native wrapper for Panasonic FZ-N1 device features
Maintainers
Readme
react-native-fz-n1
React Native wrapper for Panasonic FZ-N1 device features. This package provides access to hardware buttons and barcode scanner functionality on Panasonic FZ-N1 devices.
Features
- Hardware button event handling (A1, A2, A3, USER, SIDE buttons)
- Barcode scanner integration
- TypeScript support
- Well-documented API
- Example application included
Installation
npm install react-native-fz-n1
# or
yarn add react-native-fz-n1Required Permissions
Add these permissions to your Android Manifest (android/app/src/main/AndroidManifest.xml):
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />Usage
Hardware Buttons
import {
initAPI,
AppButtonEvents,
startListeningToButtons,
stopListeningToButtons,
type ButtonType,
} from 'react-native-fz-n1';
// In your React component:
useEffect(() => {
// Initialize the API
initAPI();
// Start listening to button events
startListeningToButtons();
// Listen for button press events
const buttonDownSubscription = AppButtonEvents.addListener(
'buttonDown',
(button: ButtonType) => {
console.log(`Button ${button} was pressed`);
switch (button) {
case 'A1':
// Handle A1 button press
break;
case 'A2':
// Handle A2 button press
break;
// ... handle other buttons
}
}
);
// Listen for button release events
const buttonUpSubscription = AppButtonEvents.addListener(
'buttonUp',
(button: ButtonType) => {
console.log(`Button ${button} was released`);
}
);
// Cleanup when component unmounts
return () => {
buttonDownSubscription.remove();
buttonUpSubscription.remove();
stopListeningToButtons();
};
}, []);Barcode Scanner
import {
initAPI,
activateReader,
deactivateReader,
hasReader,
} from 'react-native-fz-n1';
// Initialize and check for scanner
const initScanner = async () => {
await initAPI();
const isReaderAvailable = hasReader();
if (isReaderAvailable) {
// Start scanning
activateReader((barcodeData: string) => {
console.log('Scanned barcode:', barcodeData);
});
}
};
// Stop scanning
const stopScanning = () => {
deactivateReader();
};API Reference
Hardware Buttons
initAPI(): Promise<void>
Initializes the FZ-N1 device API. Must be called before using any other functionality.
startListeningToButtons(): void
Starts listening for hardware button events.
stopListeningToButtons(): void
Stops listening for hardware button events.
AppButtonEvents.addListener(eventName, callback)
Adds a listener for button events. Returns a subscription that should be removed when no longer needed.
Event types:
'buttonDown': Fired when a button is pressed'buttonUp': Fired when a button is released
Button types (ButtonType):
'A1''A2''A3''USER''SIDE'
hasButtonControl(): Promise<boolean>
Checks if the application has control over the hardware buttons.
Barcode Scanner
hasReader(): boolean
Checks if a barcode reader is available on the device.
activateReader(callback: (text: string) => void): void
Activates the barcode reader and sets up a callback for scan results.
deactivateReader(): void
Deactivates the barcode reader.
Troubleshooting
Button Events Not Working
- Ensure you've called
initAPI()before using any other functions - Verify the required permissions are in your AndroidManifest.xml
- Check if
hasButtonControl()returns true - Make sure you're properly handling the event subscription cleanup
Barcode Scanner Issues
- Verify the scanner is available using
hasReader() - Ensure you're calling
deactivateReader()when done scanning - Check if another app is currently using the scanner
Contributing
See the contributing guide to learn how to contribute to the repository and the development workflow.
License
MIT
Example App
Check out the example directory for a complete example application demonstrating all features.
To run the example app:
# Clone the repository
git clone https://github.com/your-username/react-native-fz-n1.git
cd react-native-fz-n1
# Install dependencies
yarn install
# Run the example app
yarn example androidMade with create-react-native-library
