npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

react-native-fz-n1

v1.0.1

Published

React Native wrapper for Panasonic FZ-N1 device features

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-n1

Required 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

  1. Ensure you've called initAPI() before using any other functions
  2. Verify the required permissions are in your AndroidManifest.xml
  3. Check if hasButtonControl() returns true
  4. Make sure you're properly handling the event subscription cleanup

Barcode Scanner Issues

  1. Verify the scanner is available using hasReader()
  2. Ensure you're calling deactivateReader() when done scanning
  3. 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 android

Made with create-react-native-library