Developer's Guide SEKIO EPSON CORPORATION. MOVERIO Pro Developer's Guide (Rev.1.1)

Size: px
Start display at page:

Download "Developer's Guide SEKIO EPSON CORPORATION. MOVERIO Pro Developer's Guide (Rev.1.1)"

Transcription

1 Developer's Guide SEKIO EPSON CORPORATION

2 Note the following points when using this guide. The content of this guide may change without prior notice. 1. Reprinting part or all of this guide without prior permission from Seiko Epson, or reprinting for any other purposes is strictly prohibited. 2. Programs and usage instructions used in this guide are for reference only, Seiko Epson cannot be held responsible for any infringements (including industrial property rights) or damage caused to third parties. Furthermore, this guide does not imply consent to licensing for third parties or industrial property rights for Seiko Epson. 3. This document does not relate to products that require a high level of reliability, such as life support equipment. Epson accepts no responsibility if this product is used for such circumstances. SEIKO EPSON CORAPORATION 2015, All right reserved.

3 Contents 1. Introduction Product Summary and Functions Main System Specifications Basic Information for App Development Other Main Functions 5 2. Developing Apps Pre-Caution for Developing Apps Summary of Developing Apps Introduction to the Android SDK ADB driver settings Connecting the BT-2000 to a computer Including the SDK provided by EPSON Display control Display control summary Full screen display function Switch between 2D/3D display function Backlight control Mute function See-through function UI control UI control summary Application interface list Application interface details Voice commands Pre-cautions for developing Voice commands Apps Voice commands summary Application interface function summary Application interface list Application interface details Others Camera control 59

4 6.1. Pre-cautions for developing camera Apps Function summary Available parameters Image organization and format Depth data characteristics Application interface function summary Application interface list Application interface details Depth Information Acquisition Flow Details Sample Code Remarks Android standard camera API Camera.Parameters Class Sensor control Sensor control summary Using the sensor Using SensorEventListener Bluetooth/BLE Pre-cautions for developing Apps using BLE Summary Usage method Remarks & Restrictions for BLE App Development Import module Application interface list Supported GATT procedure table Application interface details BLE Processing Sample Code Power control Power control summary Acquiring Battery Information Appendix Self-diagnostic function 179

5 1. Introduction 1

6 1.1. Product Summary and Functions The BT-2000 is a smart headset for business use. The same optical see-through technology as the consumer orientated MOVERIO BT-200 has been adopted. This allows information to be displayed across a wide viewing area while keeping eye movement to a minimum, thereby reducing fatigue and making it suitable for use at work. This also allows you to view your surroundings while projecting an image, which adds an aspect of safety. The weight of the product is supported by the entire head, allowing you to work for long periods of time without feeling fatigued. You can work while checking images in a hands-free environment. 2

7 1.2. Main System Specifications Item Specifications Model number MOVERIO Pro BT-2000 Main processor OMAP4460 (dual core ARM Cortex A9) System clock Max 1.2 GHz (Auto adjusts according to the system load and temperature) System software Android / Linux Internal storage (emmc) 8 GB (2 GB reserved for the system) Main memory 1 GB Power Battery operated/ac power operated External memory MicroSD/MicroSDHC supported (32 GB max.) No. of pixels in LCD panel 960x540 (QHD)/16:9/Refresh rate 60 Hz Virtual screen size 80" (for virtual viewing distance of 5 m) Color reproduction 24 bit full color (16,770,000 colors) 3D display Available (only for side by side) User interface Audio commands: supports Japanese and English Hardware keys: Power, lock, D-pad/OK key and A, B, X, Y keys Others: Headset tap input function Camera Built-in headset, stereo camera Sensor Built-in headset, Gyro/acceleration/geomagnetic/tap detection Wi-Fi IEEE a/b/g/n, Wi-Fi Direct Wi-Fi Security WEP WPA Enterprise, Personal WPA2 Enterprise, Personal EAP Types EAP-TLS EAP-TTLS/MSCHAPv2 PEAPv0/EAP-MSCHAPv2 PEAPv1/EAP-GTC Bluetooth A2DP, HSP, HID, OPP, SPP, BLE support GPS GPS function (cold start only), hot start support planned* Safety shield is applying ANSI/ISEA Z87.1 (2015 version). 3

8 1.3. Basic Information for App Development Item Description CPU/ABI ARMv7 armeabi Android API level 15 Device screen density mdpi Screen type Tablet UI Screen orientation Fixed at Landscape (without sensor rotation) USB vendor ID 0x04B8 HOME, MENU, and BACK keys are supported by hardware keys Touch screen is not used Track pad is not supported Except for Wi-Fi, data communication, such as 3G, is not supported This is not a Google Certified device, meaning the following services which require Google Certification are not available: - Google Play - Google location information service - Additional services only available on Google Certified devices. 4

9 1.4. Other Main Functions As well as the standard Android API, the BT-2000, includes an EPSON original API, which includes the following functions. Display control Physical UI control Audio commands Camera control Sensor control Bluetooth/BLE Power control The following chapters explain how to use these from an app. 5

10 2. Developing Apps 6

11 2.1. Pre-Caution for Developing Apps BT-2000 is using Android platform, but considering the product s use purpose, it is applying own funcitions. Therefore it is neseccary to control by EPSON own API. There are some cases that Android emulator or Anddorid applications that operated with Android Smartphones may not operate. Please take attention when transplanting APK or diverting source code. Below API needs attention specially, please refer details at each chapter. Module lists that need attention for developing Apps. Camera Chapter 6 Camera control BLE Chapter 8 Bluetooth/BLE 7

12 2.2. Summary of Developing Apps The BT-2000 has adopted Android as the system software. Therefore, you can develop apps for the BT-2000 in the same enviroment as developing apps for Android smartphones. However, when connecting the BT-2000 with the app development computer, or when using functions unique to the BT-2000, you need to provide BT-2000 compatibility. This chapter explains the following procedures necessary to develop apps for the BT Introduction to the Android SDK ADB driver settings Connecting the BT-2000 to a computer Including the SDK provided by EPSON 8

13 2.3. Introduction to the Android SDK The introduction to the Android SDK assumes the following steps will be performed in a Windows 7 environment Acquiring Android Studio Download Android Studio from the following Website Acquiring and installing JDK Download the JDK (7 or later) from the following Website, and then install. (Not sure if it s a good idea to include the link above as it may change over time) Installing Android Studio Follow the directions provided by the installer to install Android Studio. Example) C:\Users\User name\appdata\local\android\sdk * From here on, instructions assume Android Studio is installed in the folder above. 9

14 Installing Platform-tools, SDK Platform, and USB Driver Execute "C:\Users\User name\appdata\local\android\sdk\sdk Manager.exe". * When you start SDK Manager, the dialog "No packages found" may be displayed. This occurs when the proxy is not set correctly, and information cannot be updated. Close all dialogs except for "Android SDK Manager", and then set the proxy in [Tools] - [Options]. 10

15 Select the following necessary files in the SDK Manager, and then install. [Tools] - [Android SDK Platform-tools] [Android 4.0.3] - [SDK Platform] [Extras] - [Google USB Driver Select the above, click [Install], and then select Accept all. This completes the introduction to the Android SDK. Next, we will explain how to connect the BT-2000 to the app development computer, and setting up the ADB driver. 11

16 2.4. ADB driver settings Here we will explain how to connect the BT-2000 to the app development computer, and set the ADB driver Editing the Google USB Driver Settings for the BT-2000 are added to the Google USB Driver installed in the previous item. Open [C:\Users\User name\appdata\local\android\sdk\extras\google\usb_driver\android_winusb.inf] in a text editor, and then add the following 6 lines to 2 points in the [Google.NTx86] and the [Google.NTamd64]. ;EPSON MOVERIO BT-2 series MTP %SingleAdbInterface% = USB_Install, USB VID_04B8&PID_0C06 %CompositeAdbInterface% = USB_Install, USB VID_04B8&PID_0C06&MI_01 ; EPSON MOVERIO BT-2 series PTP %SingleAdbInterface% = USB_Install, USB VID_04B8&PID_0C07 %CompositeAdbInterface% = USB_Install, USB VID_04B8&PID_0C07&MI_01 12

17 Omit Omit Vendor ID setting Set ADB as the vendor ID. Start the command prompt, run " cd C:\Users\User name\appdata\local\android\sdk\tools " and change the work folder. Execute the android.bat, and handle the "update adb" argument as shown below. The file is created in [C:\Users\User name\.android\adb_usb.ini] Open this file (adb_usb.ini) in notepad, and add the vendor ID (0x04B8) as shown below. # ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT. # USE 'android update adb' TO GENERATE. # 1 USB VENDOR ID PER LINE. 0x04B8 This completes setting up the ADB driver in the app development environment. The next section explains how to connect the BT-2000 to a computer. 13

18 2.5. Connecting the BT-2000 to a computer This section explains how to connect the BT-2000 to a computer after the ADB driver setting has been completed BT-2000 settings Start the BT-2000, and then select "Settings" - "Developer options" - "USB debugging" Install the BT-2000 driver Connect a USB cable to the computer on which the BT-2000 is running and the ADB driver settings are complete. If the computer does not respond, disconnect the USB cable, restart the BT-2000, and then reconnect the USB cable. When "New device detected" is displayed on the computer, select [Control Panel] - [Hardware and Sound] - [Device Manager]. Right-click [embt2] from [Other devices], and then select Update Driver Software. 14

19 Select [Browse my computer for driver software]. Select the driver from the following path. C:\Users\User name\appdata\local\android\sdk\extras\google\usb_driver When [Android Composite ADB Interface] is displayed in [Android Device] as shown below, ADB connection is available Checking the connection You can check if the computer and the BT-2000 are connected by using the ADB check command. Start the command prompt, run "cd C:\Users\ User name \AppData\Local\Android\sdk\tools ", and move the folder.* It is useful to maintain the environment variable path mentioned above. When you execute "adb devices" the message " ABCDEF2 device" is displayed. ADB connection is complete. * If this is not displayed, reconnect the BT-2000 to the USB port, and rerun the "adb devices" command. 15

20 2.6. Including the SDK provided by EPSON Cautions for using SDK provided by EPSON Please make sure to confirm the version of SDK provided by EPSON and the version of system software inside BT If the version of SDK provided by EPSON used for Apps development and the version of system software is not matching, due to the difference of API included, developed Apps may not operate. This phenomenon may occur in below Apps. Apps using Voice command class(voicecommandclientcallbacks) If it happens, please solve by below procedure. 1) Change the SDK of Apps development environment to SDK that matching system software version. 2) Revise the source code according to SDK and re-build How to use SDK provided by EPSON The following procedures assume app development in Android Studio. - Create a Project from [File] - [New Project] - Display Project View in Android Studio, and then create a "libs" folder in the Project folder from [File] - [New] - [Directory]. - Copy the "*.jar" file you want to use for Explorer to the "libs" folder. - Right-click the *.jar file in Project View from Android Studio, and then select [Add as Library...]. 16

21 - Import necessary packages in the application source code. - Add the necessary access permission in AndroidManifest.xml. * The package name, permissions etc indicate the necessary items for each of the following function sections. 17

22 3. Display control 18

23 3.1. Display control summary This chapter explains the display control function for the BT The BT-2000 is a smart headset with an optical see-through function. You can overlay information on the display using an optical technique that provides clear images, without disturbing the view of the user's surroundings. It is also possible to project more information since the device uses a see-through system allowing images to be projected for both eyes, as opposed to the single image one-eye type. The advantage with this device is that eye movement is kept to a minimum, thereby reducing fatigue and making it suitable for use at work. You can also flip-up the MOVERIO Pro display, which allows you to set the display section by holding it with one hand when you want to superimpose video or images on your current work space. The following section explains the functions and usage methods available. Full screen display function Switch between 2D/3D display function (API) Mute function (API) Backlight control See-through function 19

24 3.2. Full screen display function The MOVERIO Pro BT-2000 is based on Android 4.0 Tablet UI. This specification does not normally allow full display in applications in Android 4.0 Tablet UI; however, you can follow the steps below to enable full display by specifying a unique flag in the app. Executing full screen in applications Execute the following process in oncreate() for each Activity. Window win = getwindow(); WindowManager.LayoutParams winparams = win.getattributes(); winparams.flags = WindowManager.LayoutParams.FLAG_SMARTFULLSCREEN; win.setattributes(winparams); For apps with multiple Activitys, execute the above process for each Activity. Add an import definition import android.view.window; import android.view.windowmanager; Furthermore, since the import file itself exists in the SDK, when using the standard SDK issued by Google, the build will pass through with the following temporary support. Change defined values to direct values (for standard SDK) * Defined value: FLAG_SMARTFULLSCREEN = 0x ; winparams.flags = WindowManager.LayoutParams.FLAG_SMARTFULLSCREEN; winparams.flags = 0x ; 20

25 Disable full screen display (show status bar) Enable full screen display (hide status bar) 21

26 3.3. Switch between 2D/3D display function The BT-2000 allows you to display 3D content using Side by side. The side by side method places images on the left and right of the screen frame. When realizing the side by side system with image frames of QHD size, you need to arrange images from left to right by reducing 960 x 540 by half (480 x 540 pixels) to create one frame of a QHD image. Total pixels 480 pixels 540 pixels Left eye image Right eye image You can use the following interface to separate images for the left and right eyes in the side by side system, and output each display. Inport file jp.epson.moverio.h725.displaycontrol Constructor DisplayControl(Context context) 22

27 Interface int setmode(int DisplayMode, Boolean toast) Parameter DisplayMode : 2D/3D mode situation 2D Mode : DisplayControl.DISPLAY_MODE_2D 3D Mode : DisplayControl. DISPLAY_MODE_3D toast : Switch display/un-display of OSD of 2D/3D Display : true Un-display : false 23

28 3.4. Backlight control Adjust backlight brightness When changing the backlight display built-into the headset, you can change the transparency of the displayed image. When the brightness is low, the image is more transparent, and when the brightness is high, the image is more opaque. Inport file jp.epson.moverio.h725.displaycontrol Constructor DisplayControl(Context context) Interface Display brightness settings int setbacklight(int backlight) Display brightness acquisition int getbacklight() Parameter backlight: Brightness level 0 (dark) to 20 (bright) Return value Success:0 Failure:-1 24

29 3.5. Mute function Display mute The mute function allows you to temporarily stop displaying images. Use the following interface to activate and then deactivate mute. Inport file jp.epson.moverio.h725.displaycontrol Constructor DisplayControl(Context context) Interface int setmute(boolean mute) Parameter mute: Mute ON (TRUE)/OFF (FALSE) Return value Execution result 0 (normal value), any other value (error) Audio mute The audio mute function allows you to temporarily stop outputting audio. Use the following interface to activate and then deactivate mute. Inport file jp.epson.moverio.h725. AudioControl Interface int setmute(boolean mute) Parameter mute: Mute ON (TRUE)/OFF (FALSE) Return value Execution result 0 (normal value), any other value (error) 25

30 Attentions When using int setmute(boolean mute), designate below permission to the Manifest file of App. <uses-permission android:name="android.permission.modify_audio_settings"></uses-permission> 26

31 3.6. See-through function MOVERIO Pro is a device that uses projection technology. Projection is displayed by reflecting light through an Active Matrix LCD panel into a light-guided panel. It is possible to create a half-mirror version (whereby not all the pixels are needed) allowing images to be arranged over a real-life scene giving a sense of transparency, and creating a more vivid augmented reality experience. To create this transparent background effect, so visual elements (text, graphics ) stand out vividly, the background will need to be set to black when drawing on the projection, so you display the target section overlapping with the actual images. (In this situation, we recommend that you do not use the shade.) The following steps allow you to create this AR effect using the see-through function. 1) Execute full screen support. To reduce the feeling of being in a screen, remove everything except for the necessary image (status bar etc ). 2) Make the background black. Make everything black except for the object you want to display. In theory, the black section should keep out external light. Object you want to display Displayed scene Real scene view 27

32 4. UI control 28

33 4.1. UI control summary The user interface for the BT-2000 is composed of 11 hardware buttons; power, key lock, A, B, X, Y, D-pad (up, down, left, right), and the select/ok key. This section explains the functions called when these buttons are pressed, as well as the key assignment change function that is unique to the BT Hardware button types and functions The BT-2000 comes with the hardware buttons shown in figure 4-1. The functions for each button are shown in table 4-1. LED indicator Power button Key lock button A button D-pad (up, down, left, right) B button D-pad (select/ok) X button Y button Figure 4-1 BT-2000 built-in hardware button Table 4-1 List of main parameter combinations Button name Function Power Turn the device ON/OFF Key lock Enable/disable button input A button Back B button Home X button Menu Y button MultiFunctionOSD display*1 (See table 2) D-pad up Upper input D-pad down Lower input D-pad left Left input D-pad right Right input Select/OK key Confirm 29

34 Table 4-2: MultiFunctionOSD display function MultiFunction operations Number of times Function Adjustment method button pressed Press once Display OSD, adjust volume D-pad up/right: Volume Up D-pad down/left: Volume Down Press twice Adjust brightness D-pad up/right: Increase screen brightness D-pad down/left: Decrease screen brightness Press three times Switch between 2D/3D D-pad up/right: Set 2D D-pad down/left: Set 3D 30

35 BT-2000 change key assignment function The BT-2000 allows you to change the functions assigned to the hardware buttons mentioned above. The standard hardware button assignments are applied in Default mode, the changed hardware button assignments are applied in User mode. Default mode User mode Button name Function Button name Function Power Turn the device Power Turn the device ON/OFF ON/OFF Key lock Enable/disable button input Key lock Enable/disable button input A button Back A button F1 B button Home B button F2 X button Menu Change X button F3 mode Y button Multi Function OSD Y button F4 Display D-pad up Move up D-pad up Move up D-pad down Move down D-pad down Move down D-pad left Move left D-pad left Move left D-pad right Move right D-pad right Move right select/ok key Confirm select/ok key Confirm Figure 1: Hardware buttons and functions Events called when hardware buttons are pressed The following key events are generated in default mode. Hardware button Key event A button KeyEvent.KEYCODE_BACK B button KeyEvent.KEYCODE_HOME X button KeyEvent.KEYCODE_MENU Y button ( Reserved in the system ) D-pad up KeyEvent.KEYCODE_DPAD_UP D-pad down KeyEvent.KEYCODE_DPAD_DOWN D-pad left KeyEvent.KEYCODE_DPAD_LEFT D-pad right KeyEvent.KEYCODE_DPAD_RIGHT select/ok key KeyEvent.KEYCODE_DPAD_CENTER The following events are generated in user mode. 31

36 Hardware buttons A button B button X button Y button D-pad up D-pad down D-pad left D-pad right select/ok key Key event KeyEvent.KEYCODE_F1 KeyEvent.KEYCODE_F2 KeyEvent.KEYCODE_F3 KeyEvent.KEYCODE_F4 KeyEvent.KEYCODE_DPAD_UP KeyEvent.KEYCODE_DPAD_DOWN KeyEvent.KEYCODE_DPAD_LEFT KeyEvent.KEYCODE_DPAD_RIGHT KeyEvent.KEYCODE_DPAD_CENTER Using the change function for key assignments By changing the key assignments, the key codes called when you press the A, B, X, or Y buttons are not the standard Back, Home, or Menu buttons in Android, instead, the key codes are changed to F1 to F4. Therefore, you can include optional funtions to the F1 to F4 codes making use of the A, B, X, and Y buttons as with the application's original function. Specifications for status transitions in key assignment mode Status transitions (where the value of the key is changed) for the key assignment mode cannot be set in the app; they should be set in the system. For example, when the key assignment mode for application A is set to User mode, and then a different application B is started, the key assignment mode for application B is also set to User mode. The BT-2000 is equipped with a standard iwnnime text input system. This system uses the Back, Menu, and D-pad keys for input, and automatically changes the key assignments to Default mode when starting up the BT When closing an app, the key assignment mode changes to the mode set in iwnnime for the last app that was started, however operations are not guaranteed when an error occurs or if the app does not close normally. For key assignment mode management, we recommend using the mode used for the last app to be started. When an app is constructed with multiple source calls, and calls that apply not just iwnnime, we recommend managing the key assignment status according to each app that is started. 32

37 4.2. Application interface list Tables 4-3 provide a list of application interfaces for changing key assignments. You also need to import the following models to use each API. android.btutil.keyassign Table android.btutil.keyassign for application interface list NO. Function name Function summary Notes 1 getkeyassignmode Acquires the mode for the current key assignment. 2 setkeyassignmode Set and apply a key assignment mode. 33

38 4.3. Application interface details getkeyassignmode Function Acquire the mode for the current key assignment. Format static int getkeyassignmode (void); Parameter None. Return value Model Int Explanation - KEYASSIGN_MODE_DEFAULT: Default mode - KEYASSIGN_MODE_USER: User mode Usage procedure int mode; /*Acquire the current mode*/ mode = KeyAssign.getKeyAssignMode (); /*Acquire provided camera mode*/ if (mode == KeyAssign.KEYASSIGN_MODE_USER) { /*Process*/ } 34

39 setkeyassignmode Function Set key assignment mode and apply to the system. Format boolean setkeyassignmode(int mode); Parameter Model name Explanation int mode Key assignment mode to be set. You can specify the value using a macro for the following android.btutil.keyassign classes. - KEYASSIGN_MODE_DEFAULT (or 0) - KEYASSIGN_MODE_USER (or 1) Return value false: setting failed true: setting succeeded Use procedure 1 /*Set user mode*/ KeyAssign.setKeyAssignMode (KeyAssign.KEYASSIGN_MODE_USER); 35

40 5. Voice commands 36

41 5.1. Pre-cautions for developing Voice commands Apps Please make sure to confirm the version of SDK provided by EPSON and the version of system software inside BT If the version of SDK provided by EPSON used for Apps development and the version of system software is not matching, due to the difference of API included, developed Apps may not operate. This phenomenon may occur in below Apps. Apps using Voice command class(voicecommandclientcallbacks) Inside revision from R1.0.to R1.2.1, Callback API is added so that it is necessary to apply to this change. If it happens, please solve by below procedure. 1) Change the SDK of Apps development environment to SDK that matching system software version. 2) Revise the source code according to SDK and re-build. 37

42 5.2. Voice commands summary The BT-2000 allows you to select*1 an information file containing vocabulary that you want to use for voice recognition. The device recognizes the voice included in this vocabulary information, and returns the corresponding ID.Voice is inputted using a microphone, and the device recognizes the voice that has been registered*2. Voice is registered using an audio information file that matches IDs to recognized vocabulary (lms file). When recognized voice is inputted, the application can use a callback function to acquire the ID for the vooice. By mounting an optional process in the application for each ID acquired by callback, voice input can be used as a trigger. *1 When no file is specified, the default list stored on the system is selected automatically. *2 Only vocabulary that has already been registered can be recognized, this differs from the standard sound recognition software that uses network access to confirm words. 38

43 5.3. Application interface function summary You can use the following functions by using audio command API. (1) Connect to a service class that provides audio command functions. (2) Disconnect from a service class that provides audio command functions. (3) Acquire an interface to control audio commands. (4) Register a callback. (5) Cancel a callback. (6) Set parameters used for the audio recognition start conditions. (7) Enable audio input status. (8) Disable audio input status. (9) Receive the recognition result of voice commands (10) Receive the situation of if voice commands can receive the input To use API, execute VoiceCommandClient.bindToRemoteRunningService() first and connect to a service class that provides an voice command function. Next, execute VoiceCommandClient.registerCallback() to register a callback to receive recognition results. When connection to the service is complete, execute getvoicecommandsysteminterface() to acquire the interface for controlling the voice command function. 39

44 5.4. Application interface list Tables 5-1 and 5-2 provide a list of application interfaces for using the voice command function. You also need to import the following models to use each API. android.media.epson.ivoicecommandinterface android.media.epson.ivoicecommandservicecallbacks android.media.epson.voicecommandclient android.media.epsonvoicecommandclientcallbacks Table 5-1 android.media.epson.ivoicecommandinterface for application interface list NO. Function name Function summary Notes 1 setsnr Set parameters used for the voice recognition start conditions. Set the recognition start conditions according to the amount (S/N ratio) of voice (noise) being input in the usage environment. 2 getsnr Acquire the current value for the set S/N ratio. 3 setamp Set parameters used for the voice recognition start conditions. Set the recognition start conditions according to the amplitude for the input voice. 4 getamp Acquire the setting for the amplitude of the current input voice. 5 start Enable voice input. 6 stop Disable voice input. Table 5-2 android.media.epson. VoiceCommandClient for application interface list NO. Function name Function summary Notes 1 registercallback Register a callback to acquire the recognition results for a voice command. 2 unregistercallback Cancel a callback to acquire the recognition results for a voice command. 3 getvoicecommandsysteminterface Acquire an IVoiceCommandInterface class as the interface to control voice commands. 4 bindtoremoterunningservice Connect to a service class of voice commands. 5 unbindfromremoterunningservice Disconnect from a service class of voice commands. 40

45 Table5-3 android.media.epson. VoiceCommandClientCallbacks application interface list NO. Function name Function summary Notes 1 onserviceconnected Called after connection to service class implementing callback of voice command function has completed. 2 onservicedisconnected Called when service controlling voice command is stopped for some reasons. 3 onvoicecommand Callback for receiving voice command recognition result. 4 onspeakable Callback for receiving if voice command system is accepting voice input or not 41

46 5.5. Application interface details setsnr Function Set parameters used for the voice recognition start conditions. Set the recognition start conditions according to the amount (S/N ratio) of voice (noise) being input in the usage environment. Format boolean setsnr (float snr) throws RemoteException; Parameter Value of the S/N ratio to be set. Minimum: 0, Maximum: If the value is too large, the app should not be influenced by surrounding noise, however the user will need to talk loudly to trigger a response. Return value Model boolean Explanation Success: true, Failure: false getsnr Function Acquire the set S/N ratio. Format float getsnr() throws RemoteException; Parameter None. Return value Model float Explanation The current S/N ratio value used as the recognition start condition. 42

47 setamp Function Set parameters used for the voice recognition start conditions. Set the amplitude value as one of the recognition start conditions. Format boolean set Amp (int amp) throws RemoteException; Parameter Value of the amplitude to be set. Minimum: 0, Maximum: If the value is too large, the app should not be influenced by surrounding noise, however the user will need to talk loudly to trigger a response. Return value Model boolean Explanation Success: true, Failure: false 43

48 getamp Function Acquire the set amplitude value. Format int getamp() throws RemoteException; Parameter None. Return value Model Int Explanation Receive the value for the amplitude as the input voice recognition start condition start Function Enable voice input status. Format boolean start(string path) throws RemoteException; Parameter Absolute path to the lms file. When null is specified, the lms file stored in the system is automatically selected and set (the default lms file) based on the region information for the operating system of the BT Return value Model boolean Explanation Success: true, Failure: false 44

49 stop Function Disable voice input. Format boolean stop(void) throws RemoteException; Parameter None. Return value Model boolean Explanation Success: true, Failure: false registercallback Function Register a callback to acquire the recognition results for a voice command. Format void registercallback(voicecommandclientcallbacks cb) Parameter VoiceCommandClientCallbacks class object Return value None 45

50 unregistercallback Function Cancel a callback to acquire the recognition results for a voice command. Format void unregistercallback() Parameter None. Return value None getvoicecommandsysteminterface Function Acquire a class as the interface to control voice commands. Format IVoiceCommandInterface getvoicecommandsysteminterface() Parameter None. Return value Model Explanation IVoiceCommandInterface Interface for voice command control Cautions Execute inside or after VoiceCommandClientCallbacks.onServiceConnected(). 46

51 bindtoremoterunningservice Function Connect to a service class that provides voice command functions. Format void bindtoremoterunningservice(activity activity); Parameter An Activity object connected to the voicec command service. Return value None unbindfromremoterunningservice Function Disconnect from a voice command service. Format void unbindfromremoterunningservice(activity activity) Parameter An Activity object connected to the voice command service. Return value None. 47

52 onvoicecommand Funtion When detecting word that voice command system detected, callback returing ID of the word and character string. Format void onvoicecommand(int id, String word) Parameter Model Explanaation int id ID number of the detected word registered in lms file. String word Character string of the detected word registered in lms file. Return value None Use example Shown in next page 48

53 /* MainActivity */ Public class MainActivity extends Activity implements VoiceCommandClientCallbacks { private VoiceCommandClient mvoicecommandclient = null; private IVoiceCommandInterface mvoicecommandinterface; /* Voice command starting button UI */ private Button mstartbutton = protected void oncreate(bundle savedinstancestate) { /* Connect to voice command service */ mvoicecommandclient = new VoiceCommandClient(); mvoicecommandclient.bindtoremoterunningservice(this); mvoicecommandclient.registercallback(this); mstartbutton.setonclicklistener(new View.OnClickListener() public void onclick(view v) { try { /* Start Voice command */ mvoicecommandinterface.start(...); } catch (RemoteException e) { e.printstacktrace(); } } }); public void onserviceconnected() { /* After completing connection to service, receive voice command interface */ mvoicecommandinterface = mvoicecommandclient.getvoicecommandsysteminterface(); public void onvoicecommand(int id, String word) { /* Show ID and character string of detected word by toast */ Toast.makeText(MainActivity.this, "MainActivity ID:"+id+" "+word, Toast.LENGTH_SHORT).show(); } 49

54 onspeakable Function Callback noticed when voice command system voice receving situation has changed. Format void onspeakable(boolean on) Parameter Model boolean on Explanation true: Voice input acceptable situation false:voice input not acceptable situation Return value None Usage example Shown in next page 50

55 /* MainActivity */ Public class MainActivity extends Activity implements VoiceCommandClientCallbacks { private VoiceCommandClient mvoicecommandclient = null; private IVoiceCommandInterface mvoicecommandinterface; /* Voice command starting button UI */ private Button mstartbutton = protected void oncreate(bundle savedinstancestate) { /* Connecting to voice command service */ mvoicecommandclient = new VoiceCommandClient(); mvoicecommandclient.bindtoremoterunningservice(this); mvoicecommandclient.registercallback(this); mstartbutton.setonclicklistener(new View.OnClickListener() public void onclick(view v) { try { /* Start voice command */ mvoicecommandinterface.start(...); } catch (RemoteException e) { e.printstacktrace(); } } }); public void onserviceconnected() { /* After completing connection to service, receive voice command interface */ mvoicecommandinterface = mvoicecommandclient.getvoicecommandsysteminterface(); public void onvoicecommand(int id, String word) { /* Show ID and character string of detected word by toast */ Toast.makeText(MainActivity.this, "MainActivity ID:"+id+" "+word, Toast.LENGTH_SHORT).show(); public void onspeakable(boolean on) { /* Notice change in voice input availability by toast */ if (on) { Toast.makeText(MainActivity.this,"please speak Toast.LENGTH_SHORT).show(); } } 51

56 5.6. Others Timing for reflecting the setting for the voice recognition start conditions When audio input recognition switches from disabled to enabled, the voice recognition start conditions are reflected in the system. Therefore, when IVoiceCommandInterface.start() is called after calling IVoiceCommandInterface.stop(), audio input is disabled and IVoiceCommandInterface.setSnr() is called, the setting is then reflected once by the system when you change the recognition start conditions when audio input is enabled List of default lms files and vocabulary - /system/vendor/bin/epe_au01_e1.lms default lms file(except for Japan) - /system/vendor/bin/epe_au01_e2.lms - /system/vendor/bin/epe_au01_j1.lms default lms file(for Japan) - /system/vendor/bin/epe_au01_j2.lms epe_au01_e1.lms IDnumber Voice input IDnumber Voice input IDnumber Voice input 2 Menu 19 Display Off 33 Action 3 3 Next 21 Blue 34 Action 4 4 Return 22 Red 35 Action 5 5 Enter 23 Green 51 Zoom In 6 Start 24 Yellow 52 Zoom Out 7 Stop 31 Action1 101 Version 18 Display On 32 Action 2 epe_au01_e2.lms IDnumber Voice input IDnumber Voice input IDnumber Voice input 1 Home 15 Go Left 42 Item 2 8 Try again 16 Go Up 43 Item 3 9 Finish 17 Go Down 44 Item 4 10 Connect 21 Blue 45 Item 5 11 Shoot 22 Red 101 Version 12 Rotate 23 Green 13 Setting 24 Yellow 14 Go Right 41 Item1 52

57 epe_au01_j1.lms IDnumber Voice input IDnumber Voice input IDnumber Voice input 2 メニュー 21 ブルー 33 選択 3 3 次へ 22 赤 34 選択 4( せんたくよん ) 4 戻る 22 レッド 34 選択 4( せんたくし ) 5 決定 23 緑 35 選択 5 6 スタート 23 グリーン 51 拡大 7 ストップ 24 黄色 52 縮小 18 画面オン 24 イエロー 101 バージョン 19 画面オフ 31 選択 1 21 青 32 選択 2 epe_au01_j2.lms IDnumber Voice input IDnumber Voice input IDnumber Voice input 1 ホーム 16 上へ 24 イエロー 8 もう一度 17 下へ 41 項目 1 9 終了 21 青 42 項目 2 10 接続 21 ブルー 44 項目 3( こうもくよん ) 11 撮影 22 赤 44 項目 4( こうもくし ) 12 回転 22 レッド 45 項目 5 13 設定 23 緑 101 バージョン 14 右へ 23 グリーン 15 左へ 24 黄色 53

58 Callbacks that acquire recognition results Create callbacks in the following format. void onvoicecommand(int arg0, String arg1) For int arg0, the recognized word is assigned an ID, and for String arg1 the recognized word text string is stored Voice command API usage flow example See the sample source for voice commands for more details Callback onspeakable for receiving speaking timing In voice command system, when noise is inputted and judged as speech from S/N ratio or Amp value, it enters into recognition process, and will not accept voice input for a moment. Also after recognizable word is detected, it will be in transferring process to be in recognition acceptable situation again, so there is a period that can not accepet voice input. By showing these period as GUI, it can improve voice command convenience. In details, same as when receiving voice recognition result, use callback that Android.media.epson.VoiceCommandClientCallbacks interface has. Callbak to use is VoiceCommandClientCallbacks interface inside Android.media.epson.VoiceCommandClientCallbacks interface. By implementing this and define onspeakable(), can receive speech acceptable timing. 54

59 And if onspeakable is called when there is no speech situation, three is a possibility of reacting to surround noise. Therefore, using onspeakble receiving value as index, set SN ratio and Amp value to make value received from onspeakable becomes always true while not speaking. By this way, it is possible to set SN, AMP more suitbale for using environment Sample App This chapter explains about voice command sample App that is pre-installed inbt App information App name:voicecommandsample.apk Icon image 2. Summary BT-2000 has function to recognize voice inputted from voice input equipment like headset microphone included, judge applicable word exist or not inside registered voice information file(lms), and notice ID and character string to App according to the judgement. This App is a smple App using this voce command function. 55

60 3. Function ⅰ.Voice information(lms)file change BT-2000 has below voice information file (lms) inside the sytem in initial situation. /system/vendor/bin/epe_au01_e1.lms(english default) /system/vendor/bin/epe_au01_e2.lms /system/vendor/bin/epe_au01_j1.lms(japanese default) /system/vendor/bin/epe_au01_j2.lms By selecting these, it is available to detect registered word of selected file from inputted voice. ⅱ.Voice detection, receiving detected word and ID by App When voice is inputted by microphone and applicable voice is detected, ID number related to the detected word will be notieced to the App. App will display ID and character string of the detected word to the display by toast. ⅲ.Voice command parameter setting Voice command function has a threshold as a parameter to decide whether inputted voice is am speech by human or a noise. Paramter has 2 series, SN ratio and AMP value. By adjusting these, it is available to use voice command function where noie level is high. SN ratio setting Compared to surround noise, how much bigger sound inputted to be decided as a speech (Unit db). Min value 0 Max value Initial setting 10.0 AMP value setting Sound pressure level of inputted voice to be decided as a speech. Min value 0 Max value Initial setting

61 4. Sample App operation method A 1 SN ratio setting Display SN ratio setting value that is currently applied. 2 SN ratio changing UI Can set value by selecting up arrow or down arrow or the value Left 3 figures are integer figure, right 2 figures are decimal figure. 3 OK button(for SN ratio setting) Set the value setted by 2 to the voice command system. 4 AMP setting value Display AMP value that is currently applied. 5 AMP setting value changing UI Can set value by selecting up arrow or down arrow or the value 6 OK button(for AMP value setting) Set value setted by 5 to the voice command system. 7 Start button, Stop button Start button:apply SN ratio value, AMP value, voice information(lms) to the voice command system and make voice detection effective. 57

62 Stop button:invalid voice detection. 8 Display voice information(lms)file Display voice information (lms) file that currently selected. When App started, it displays lms file name. In this situation, when you make 7 voice detection effective, it operates as default voice information (lms) hold inside sytem as the word recognition list. 9 Voice information(lms) file changing file dialog button Display file dialog for selecting voice inforamtion(lms)file. A GUI to display situation whether the voice command system accept voice input or not. When blue microphone is displayed, voice input is acceptable. When red microphone is displayed, voice input is not acceptable. Remarks At timing of Start button pressed, data necessary for system operation like SN ratio and lms file will by applied to the system. While voice command is in operation(when voice detection is available), setting value like SN ratio that changed by the App does not apply when pressing the Start button. In this situation, press Stop button once, stop the voice command and then change again the setting value and press the Start button. 5. Voice information(lms)file Use Voice information (lms) that is stored inside BT-2000 system. For detail, refer to chapter

63 6. Camera control 59

64 6.1. Pre-cautions for developing camera Apps As BT-2000 is adopting own camera function, take below cautions for developing App using camera. Specify resolution BT-2000 has function of depth image capturing or side-by-side image capturing. So to differentiate cleary, it apply concept of camera mode which is different from normak Android equipment. Each of these camera modes has diferent camera reolution setting value available, so if you specify the resolution which applied camera mode is not supporting, it will not operate. For detail, please refer to chapter 6.2. Specify frame rate Transfering frame rate from BT-2000 camera have different available setting value related to each camera modes too. If you specify the frame rate that applied camera mode is not supporting, it will not operate. For detail, please refer to chapter 6.2. EDoF Currently there is an issue with EDoF mode. While using EDoF mode of camera mode, you can not capture Depth data. It will be planned to be supported by update, so please do not used EDoF function until this support is completed. 60

65 6.2. Function summary This chapter explains the available camera functions for the BT The headset section of the BT-2000 is equipped with a stereo camera which offers a wide variety of uses including the following three types of camera image. 1) Standard camera images 2) Stereo images using the compound camera 3) Depth (distance) images using the compound camera See figures 6-1 to 6-3 for the functions for each image. When handling these images, you need to change the camera to a mode that supports the target image. For image combinations supported in each mode, see table 6-1 or 6-2. Table 6-1 Image size for each mode (for still images) Side by Side 5MPixel Full HD HD VGA Depth 2048x1936x2 2596x x x x x480 Single VGA Single 720 Single 1080 Single 5M Side by Side Depth Table 6-2 Image size for each mode (while previewing) Side by Side 5MPixel Full HD HD VGA Depth 2048x1936x2 2596x x x x x480 Single VGA Single 720 Single 1080 Single 5M Side by Side Depth 61

66 6.3. Available parameters A list of available parameters is provided in table 6-3. Table 6-3 List of available parameters Parameter name Setting region Default value Mode Single VGA / Single 720 / Single 1080 / Single 5M Side by Side / Depth / Preview resolution *1 1080p / 720p / VGA VGA Depth ON/OFF *1 OFF/ON OFF Frame rate *1 60/30/15/ Exposure *2-5 to +6 0 Single VGA White balance *2 Daylight/ fluorescent/ Warm florescent fluorescent Contrast -3 to +3 0 Edge blending -3 to +3 0 *1: The available range varies depending on the mode. See table 6-4 for more information. *2: Exposure and white balance are set manually. Make settings according to your usage environment. Table 6-4 List of main parameter combinations No. Mode Camera Preview resolution Shooting Frame rate resolution resolution 1 side-by-side 4096x x x fps 1280x x single-through-vga 640x x x fps 15fps 30fps 60fps 3 single-through-720p 1280x x x x fps 15fps 30fps 4 single-through-1080p 1920x x x x x fps 15fps 5 single-through-5m 2596x x x fps 1280x x depth-only fps 15fps 62

67 6.4. Image organization and format You can acquire the following three types of data using API in the BT Standard images (NV21) Side by Side images (NV21) Depth (distance) data (8bit Gray Scale) Figure 6-1 Example of standard images Figure 6-2 Example of side by side images Depth data is explained in the next section. 63

68 6.5. Depth data characteristics Depth data is managed using 8 bit gray scale data, whereby the data values (brightness) indicate the distance. This is done by calculating the parallax (the offset between the two cameras) for the compound camera in the hardware, and aggregating the VGA size in pixels. Note that depth data is reduced to VGA size even if the mode setting is set to 5MP in size. Also, if the resolution is not high enough in VGA for the depth data, then you can acquire side by side images and increase the resolution using range measurement software. The higher the the depth value brings the depth data distance closer, and reducing the value makes it further away. When converting the brightness as gray scale data, the highest value of 255 brings the distance closer, and the lowest value of 0 makes it further away. Far Near Figure 6-3 Shooting depth images Furthermore, use data inferred in this way as the correct value is not provided in the product specifications for depth data with a 50 pixel edge. 50pixel 50pixel Except for surrounding 50 pixels the area is available Figure 6-4 Available range for depth data 64

69 For the relationship between the value and the distance acquired by depth data, see the following table. Note that changes and calculation errors in the shooting environment for the depth data may also occur. Distance: Distanse = Density [cm] (equation 6-1) Table 6-5 Brightness value and measurement distance Number Range Number Range Number Range Number Range Number Range Number Range

70 6.6. Application interface function summary The following explains how to use API to achieve the following three functions. 1) Set the camera mode, frame rate, preview resolution, and camera resolution for the BT-2000, and display a preview. 2) Process the image data in the app. 3) Acquire depth information with the application. Note that the API specification explained in this section is not thread safe in compliance with the specifications compared to android.hardware.camera, and therefore cannot be used at the same time for multiple threads. The following 13 APIs are used in (1). 1-1 getsupportedepsoncameramode 1-2 setepsoncameramode 1-3 getepsoncameramode 1-4 setpreviewfpsrange 1-5 setpreviewsize 1-6 getsupportedsharpnessmin 1-7 getsupportedsharpnessmax 1-8 getsharpness 1-9 setsharpness 1-10 getsupportedcontrastmin 1-11 getsupportedcontrastmax 1-12 getcontrast 1-13 setcontrast The following 5 APIs are used in (2). 2-1 onpreviewframe 2-2 setpreviewcallback 2-3 setoneshotpreviewcallback 2-4 setpreviewcallbackwithbuffer 2-5 addcallbackbuffer The following 4 APIs are used in (3). 3-1 ondepthmap 3-2 setdepthcallback 3-3 startdepthstreaming 3-4 stopdepthstreaming 66

71 6.7. Application interface list Tables 6-6 and 6-7 provide a list of application interfaces for using the following functions. 1) You can change the camera mode, frame rate, and preview resolution for the BT-2000, and display a preview. 2) Acquire preview data with the application. You also need to import the following models to use each API. android.hardware.camera Table 6-6 Camera.Parameters application interface list NO. Function name Function summary Notes 1 getsupportedepsoncameramode Acquire a list of modes supported by the camera. 2 setepsoncameramode Set the camera mode. 3 getepsoncameramode Acquire the current camera mode setting. 4 setpreviewfpsrange Set the frame rate range. Standard Android API 5 setpreviewsize Set the preview resolution. Standard Android API 6 getsupportedsharpnessmin Acquire the minimum available sharpness value. 7 getsupportedsharpnessmax Acquire the maximum available sharpness value. 8 getsharpness Acquire the current sharpness value. 9 setsharpness Set the sharpness value. 10 getsupportedcontrastmin Acquire the minimum available contrast value. 11 getsupportedcontrastmax Acquire the maximum available contrast value. 12 getcontrast Acquire the current contrast value. 13 setcontrast Set the contrast value. Table 6-7 Callbackinterface list when using camera NO. Function name Function summary Notes 1 Camera.PreviewCallback.onPre viewframe Describes processing content when acquiring image data. Standard Android API 2 Camera.setPreviewCallback Register the image data acquisition callback method. Called repeatedly when image data is Standard Android API acquired. 3 Camera.setOneShotPreviewCall back Register the image data acquisition callback method. Calls once for each image data registered. Standard Android API 4 Camera.setPreviewCallbackWit hbuffer Register the image data acquisition callback method. You can raise the processing efficiancy by Standard Android API specifying a buffer. 5 Camera.addCallbackBuffer Register the buffer used in setpreviewcallbackwithbuffer. Standard Android API 67

72 By using the API provided by the BT-2000, you can display a preview and handle image data. In either situation, you need to set the camera parameters. You can change the camera mode, frame rate, preview resolution, and camera resolution. However, when setting the camera parameters, you need to stop the previews temporarily by using stoppreview. Also, make sure you use pre-established parameter combinations, see table 6-8. Note that values larger than 1080p set for the preview will not be displayed. When handling image data, you need to register the image data acquisition callback method. Figure 6-5 shows an example of the flow for the API used in this guide. After starting the camera, the camera mode is set and the preview starts. During a preview, you can register the image acquisition callback method as necessary, and acquire images. Execute processing for the acquired images in the app. * Because the API in this guide does not comply with the android.hardware.camera specifications and thread safe are not available, do not handle multiple threads at the same time. Camera.open Camera. setpreviewcallback Camera.getParameters registrer callback method (1) Set Mode Camera.Parameters. setepsoncameramode Camera.stopPreview If the callback is registered... Camera.setParameters Camera.startPreview Camera.PreviewCallback. onpreviewframe (2) receive the images Figure 6-5 Example of API usage flow 68

73 6.8. Application interface details getsupportedepsoncameramodes Function Acquire a list of camera modes supported by the BT-2000 camera. Format List<String> getsupportedepsoncameramode (void); Parameter None. Return value Model Explanation List<String> Acquire the current camera mode set in the BT Camera mode list Camera mode Explanation side-by-side Mode in which the host creates depth information. You can acquire images from two camera sensors at the same time. The camera resolution and shooting resolution is 2596 x single-through-vga Standard, still image mode. The camera resolution and shooting resolution is 640 x 480. single-through-720p Standard, still image mode. The camera resolution and shooting resolution is 1280 x 720. single-through-1080p Standard, still image mode. The camera resolution and shooting resolution is 1920 x single-through-5m Standard, still image mode. The camera resolution and shooting resolution is 2596 x depth-only Mode to acquire only depth information. 69

74 Procedure (camera is a Camera class object) /*Start camera*/ camera = Camera.open(); /*Acquire current parameters*/ Camera.Parameters params = camera.getparameters(); /*Acquire provided camera mode*/ List<String> Supported = params.getsupportedepsoncameramode(); 70

75 setepsoncameramode Function Set the BT-2000 camera mode. Format void setepsoncameramode ( String mode ); Parameter Model name in/out Explanation String mode in Set camera mode. Set using macros for the following seven Camera.Parameters classes. - EPSON_CAMERA_MODE_SIDE_BY_SIDE - EPSON_CAMERA_MODE_SINGLE_THROUGH-VGA - EPSON_CAMERA_MODE_SINGLE_THROUGH-720P - EPSON_CAMERA_MODE_SINGLE_THROUGH-1080P - EPSON_CAMERA_MODE_SINGLE_THROUGH-5M - EPSON_CAMERA_MODE_DEPTH_ONLY Return value None. Measurement table for macro and camera mode Macro EPSON_CAMERA_MODE_SIDE_BY_SIDE EPSON_CAMERA_MODE_SINGLE_THROUGH-VGA EPSON_CAMERA_MODE_SINGLE_THROUGH-720P EPSON_CAMERA_MODE_SINGLE_THROUGH-1080P EPSON_CAMERA_MODE_SINGLE_THROUGH-5M EPSON_CAMERA_MODE_DEPTH_ONLY Camera mode side-by-side single-through-vga single-through-720p single-through-1080p single-through-5m depth-only 71

76 Use procedure 1 (when side by side is set) /*Start camera*/ camera = Camera.open(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*Set camera mode to side by side*/ params.setepsoncameramode(epson_camera_mode_side_by_side); /*Reflect camera setting in camera device*/ camera.setparameters(params); /*Start preview*/ camera.startpreview(); Use procedure 2 (when preview has already started) /*Stop preview*/ camera.stoppreview(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*From here on, use procedure 1*/ Remarks After setting the camera mode in setepsoncameramode, be sure to perform setparameters. Changed content is not reflected in the camera device until setparameters is executed. When the preview has already started, use stoppreview to temporarily stop the preview, and then set the camera mode. Each camera mode has a limited combination of preview resolutions and frame rates. Note that a run-time exception will occur in setparameters for combinations that exceed the limit. The parameters for associated frame rates and preview resolutions will not change even if you set the camera mode in setepsoncameramode. Application developers should set these parameters using appropriate combinations before executing setparameters. Please refer to Table 6-4 for available setting parameters. Capturing resolution is fixed by each mode. Change setting by using setpicturesize which is Android standard API is not available. 72

77 getepsoncameramode Function Acquire the current camera mode. Format String getepsoncameramode (void); Parameter None. Return value Model String Explanation You can acquire the current camera mode as a return value. Available values in the current version: side-by-side single-through-vga single-through-720p single-through-1080p single-through-5m depth-only Usage procedure /*Start camera*/ camera = Camera.open(); /*Acquire current parameters*/ Camera.Parameters params = camera.getparameters(); /*Acquire the current camera mode*/ String mode = params.getepsoncameramode(); 73

78 setpreviewfpsrange Function Set the minimum and maximum values for the frame rate. You need to set the respective values for each of the values that can be acquired in getsupportedpreviewfpsrange(). Format void setpreviewfpsrange ( int min, int max ); Parameter Model name in/out Explanation int min in Minimum value for preview FPS (Set the value in multipliers of 1000, so 7.5 fps would be 7500) int max in Maximum value for preview FPS (Set the value in multipliers of 1000) Return value None. Use procedure 1 (set the fps to 7.5) /*Start camera*/ camera = Camera.open(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*Set camera mode to side by side*/ params.setpreviewfpsrange(7500, 7500); /*Reflect camera setting in camera device*/ camera.setparameters(params); /*Start preview*/ camera.startpreview(); 74

79 Use procedure 2 (when preview has already started) /*Stop preview*/ camera.stoppreview(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*From here on, use procedure 1*/ Remarks After setting the frame rate in setpreviewfpsrange, be sure to perform setparameters. Changed content is not reflected in the camera device until setparameters is executed. When the preview has already started, use stoppreview to temporarily stop the preview. Each frame rate has a limited combination of preview resolutions and camera modes. Note that a run-time exception will occur in setparameters for combinations that exceed the limit. 75

80 setpreviewsize Function Set the preview resolution. Table 6-8 shows the preview resolutions that can be set for each camera mode. Format void setpreviewsize ( int width, int height ); Parameter Model name in/out Explanation int width in Width of preview image int height in Height of preview image Return value None. Use procedure 1 (Set the camera mode to single-through-5m and the preview resolution to VGA) In this example, the width and height of the image are reduced to approximately 1/4 and displayed in a preview. /*Start camera*/ camera = Camera.open(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*Set camera mode to single-through-5m*/ params.setepsoncameramode(epson_camera_mode_single_through-5m); /*Set preview resolution to VGA*/ params.setpreviewsize(640, 480); /*Reflect camera setting in camera device*/ camera.setparameters(params); /*Start preview*/ camera.startpreview(); 76

81 Use procedure 2 (when preview has already started) /*Stop preview*/ camera.stoppreview(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*From here on, use procedure 1*/ Remarks After setting the preview resolution in setpreviewsize, be sure to perform setparameters. Changed content is not reflected until setparameters is executed. When the preview has already started, use stoppreview to temporarily stop the preview. Each preview resolution has a limited combination of frame rates and camera modes. Note that a run-time exception will occur in setparameters for combinations that exceed the limit. You cannot set 5M or side-by-side as the preview resolution. If you want to acquire images in 5M or side-by-side, perform shooting by using takepicture. The resolution set for preview resolution uses image data acquired in PreviewCallback. 77

82 getsupportedsharpnessmin/getsupportedsharpnessmax Function Acquire the minimum/maximum available sharpness value. Format int getsupportedsharpnessmin (); int getsupportedsharpnessmax (); Parameter None. Return value Model int Explanation Return the minimum/maximum available sharpness value. For the BT-2000, these are -3 and

83 getsharpness Function Acquire the current sharpness value. Format int getsharpness (); Parameter None. Return value Model int Explanation Return the current sharpness value. For the BT-2000, this is -3 to

84 setsharpness Function Set the sharpness value. Format void setsharpness (int); Parameter None. Return value Model int Explanation Set the sharpness value. For the BT-2000, you can set -3 to +3. Usage procedure /*Start camera*/ camera = Camera.open(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*Acquire the current sharpness value*/ int sharpness = params.getsharpness(); sharpness++; /*When the sharpness value enters an available setting range, it is set*/ if (sharpness <= params.getsupportedsharpnessmax() && sharpness >= params.getsupportedsharpnessmin() ) { params.setsharpness(sharpness); camera.setparameters(params); } Important points After setting the shatpness value in setsharpness, be sure to perform setparameters. Changed content is not reflected until setparameters is executed. 80

85 getsupportedcontrastmin/getsupportedcontrastmax Function Acquire the minimum/maximum available contrast value. Format int getsupportedcontrastmin (); int getsupportedcontrastmax (); Parameter None. Return value Model int Explanation Return the minimum/maximum available contrast value. For the BT-2000, these are -3 and

86 getcontrast Function Acquire the current contrast value. Format int getcontrast (); Parameter None. Return value Model int Explanation Return the current contrast value. For the BT-2000, this is -3 to

87 setcontrast Function Set the contrast value. Format void setcontrast (int); Parameter None. Return value Model int Explanation Set the contrast value. For the BT-2000, you can set -3 to +3. Usage procedure /*Start camera*/ camera = Camera.open(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*Acquire the current contrast value.*/ int contrast = params.getcontrast(); contrast++; /*When the contrast value enters an available setting range, it is set*/ if (contrast <= params.getsupportedcontrastmax() && contrast >= params.getsupportedcontrastmin() ) { params.setcontrast(contrast); camera.setparameters(params); } Remarks After setting the contrast value in setcontrast, be sure to perform setparameters. Changed content is not reflected until setparameters is executed. 83

88 onpreviewframe Function Use the standard Android API. Describe processing content when acquiring image data. Format void onpreviewframe ( byte[] data Camera camera ); Parameter Model name in/out Explanation byte[] data in Image data acquired from a camera. The default is NV21 format. Camera camera in Camera service object. Return value None. Usage procedure // App developer applies processing when acquiring image data private Camera.PreviewCallback mpreviewcb = new Camera.PreviewCallback() public void onpreviewframe(byte data[], Camera camera) { Log.d(TAG, "Save preview image"); synchronized (lockobject) { savepreviewdata(data); } } }; //Register the callback method at the optimal time camera.setpreviewcallback(mpreviewcb); 84

89 Remarks You need to describe how image data is handled in the application. PreviewCallback cannot guarantee the actual time of image acquisition. If there are a high volume of calculations being performed in onpreviewframe, and these are not completed by the time of the next image data acquisition, the next image data will be corrupted. We recommend acquiring image data through a sub-thread. You can use the following three APIs as the API that registers the callback method. 85

90 setpreviewcallback Function When the callback method described in is registered, it is called each time image data is acquired. The registered callback method is executed repeatedly while previewing. Format void setpreviewcallback ( Camera.PreviewCallback cb ); Parameter Model name in/out Explanation Camera.PreviewCallback cb in Callback object that receives image data. Return value None. Usage procedure // App developer applies processing when acquiring image data private Camera.PreviewCallback mpreviewcb = new Camera.PreviewCallback() public void onpreviewframe(byte data[], Camera camera) { Log.d(TAG, "Save preview image"); synchronized (lockobject) { savepreviewdata(data); } } }; //Register the callback method at the optimal time camera.setpreviewcallback(mpreviewcb); // When you remove the callback method, register null camera.setpreviewcallback(null); 86

91 Remarks To cancel image data acquisition, register null as the callback method. 87

92 setoneshotpreviewcallback Function When the callback method described in is registered, it is called when image data is acquired. This registered callback method is only executed once. Format void setoneshotpreviewcallback ( Camera.PreviewCallback cb ); Parameter Model name Camera.PreviewCallback cb in/out Explanation in Callback object that receives a preview image. Return value None. Usage procedure The same as the previous section. However, setoneshotpreviewcallback is used as the registered callback method. 88

93 setpreviewcallbackwithbuffer Function When the callback method described in is registered, it is called when image data is acquired. The registered callback method is executed repeatedly while previewing. You can secure buffer processing by specifying a dedicated buffer for image data processing. Format void setpreviewcallbackwithbuffer ( Camera.PreviewCallback cb ); Parameter Model name Camera.PreviewCallback cb in/out Explanation in Callback object that receives image data. Return value None. 89

94 Usage procedure // App developer applies processing when acquiring image data private Camera.PreviewCallback mpreviewcb = new Camera.PreviewCallback() public void onpreviewframe(byte data[], Camera camera) { Log.d(TAG, "Save preview image"); synchronized (lockobject) { savepreviewdata(data); } // Register the buffer to be used camera.addcallbackbuffer(mpreviewdata); } }; // Register the buffer to be used camera.addcallbackbuffer(mpreviewdata); //Register the callback method at the optimal time camera.setpreviewcallbackwithbuffer(mpreviewcb); Remarks You need to reserve the buffer region from the application. This provides high-speed processing when compared to setpreviewcallback or setoneshotpreviewcallback by securing and opening the memory. The application developer needs to describe the buffer management process. Specifically, the following processes are necessary. Register the buffer to be used in addcallbackbuffer described later. Calculate the size of the buffer to be registered as the width x height x 1 pixel byte. The width and the height should both be higher than their respective resolutions. Each time onpreviewframe is called, you need to re-register the buffer. If no buffer is registered, the frame is corrupted and is not called by the callback method. You can register multiple buffers. 90

95 addcallbackbuffer Function The API for registering the buffer used in setpreviewcallbackwithbuffer. Format void setpreviewcallbackwithbuffer ( byte[] callbackbuffer ); Parameter Model name byte[] callbackbuffer in/out Explanation in Buffer to be registered Return value None. Usage procedure // App developer applies processing when acquiring image data private Camera.PreviewCallback mpreviewcb = new Camera.PreviewCallback() public void onpreviewframe(byte data[], Camera camera) { Log.d(TAG, "Save preview image"); synchronized (lockobject) { savepreviewdata(data); } // Register the buffer to be used camera.addcallbackbuffer(mpreviewdata); } }; // Register the buffer to be used camera.addcallbackbuffer(mpreviewdata); //Register the callback method at the optimal time camera.setpreviewcallbackwithbuffer(mpreviewcb); 91

96 Remarks Only necessary when using setpreviewcallbackwithbuffer. Buffers are automatically secured for setpreviewcallback and setoneshotpreviewcallback. If the buffer size you register is smaller than the image data, null is returned for data. If a registered buffer region is not secured in the application, an error log is output when addcallbackbuffer is executed. Errors and exceptions do not occur. 92

97 startdepthstreaming Function Start depth information acquisition. Format void startdepthstreaming() Parameter None. Return value None. Exception Exception Explanation occurred RuntimeException An exception occurs under the following two conditions. (1) A preview has not started. (2) The camera is in a mode that does not output depth information (side by side or single through). Usage procedure /*Start camera*/ camera = Camera.open(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*Set the camera mode to depth-only*/ params.setepsoncameramode(epson_camera_mode_depth_only); /*Reflect camera setting in camera device*/ camera.setparameters(params); /*Start preview*/ camera.startpreview(); /*Start depth information acquisition*/ camera.startdepthstreaming(); 93

98 Remarks If this method is used after executing startpreview, you can execute by selecting your own timing. When resuming a preview using stoppreview -> startpreview, make sure you execute this method to resume depth information acquisition. When resuming a preview startpreview after executing takepicture, make sure you execute this method to resume depth information acquisition. You need to restart the application if the application closes in a RuntimeException. 94

99 stopdepthstreaming Function Stop depth information acquisition. Format void stopdepthstreaming() Parameter None. Return value None. Usage procedure /*Start camera*/ camera = Camera.open(); /*Acquire current parameter (or default value)*/ Camera.Parameters params = camera.getparameters(); /*Set the camera mode to depth-only*/ params.setepsoncameramode(epson_camera_mode_depth_only); /*Reflect camera setting in camera device*/ camera.setparameters(params); /*Start preview*/ camera.startpreview(); /*Start depth information acquisition*/ camera.startdepthstreaming(); /*End Depth information acquisition*/ camera.stopdepthstreaming(); /*Stop preview*/ camera.stoppreview(); Important points If depth information acquisition has not stopped when stoppreview is executed, stopdepthstreaming is executed as part of the stoppreview process. 95

100 ondepthmap Function The process executed is written during depth information acquisition. Format void ondepthmap( byte[] data, Camera camera ) Parameter Model name in/out Explanation byte[] data in Depth information. VGA size, RAW 8 format, 300 K byte data. Camera camera in Camera service object Return value None. Usage procedure // App developer applies processing when acquiring depth information private Camera.DepthCallback mdepthcb = new Camera.DepthCallback() public void ondepthmap(byte data[], Camera camera) { Log.d(TAG, "Save depth map"); synchronized (lockobject) { savedepthmap(data); } } }; //Register the callback method at the optimal time camera.setdepthcallback(mdepthcb); 96

101 Notes: To use the depth information application, you need to describe the process in ondepthmap. To execute ondepthmap, you need to meet all of the following conditions. (1) The camera mode is set depth-only mode. (2) startpreview is executed. (3) startdepthstreaming is executed. (4) A callback method is registered in setdepthcallback. For depth-only mode, preview display is unavailable. To display depth data as an image, you need to convert the data captured to image format to display images. 97

102 setdepthcallback Function Register the callback method executed during depth information acquisition. Format void setdepthcallback( Camera.DepthCallback cb ) Parameter Model name in/out Explanation Camera.DepthCallback cb in Callback object that processes depth information. Return value None. Usage procedure // App developer applies processing when acquiring depth information private Camera.DepthCallback mdepthcb = new Camera.DepthCallback() public void ondepthmap(byte data[], Camera camera) { Log.d(TAG, "Save depth map"); synchronized (lockobject) { savedepthmap(data); } } }; //Register the callback method at the optimal time camera.setdepthcallback(mdepthcb); // When you remove the callback method, register null camera.setdepthcallback(null); 98

103 Remarks To cancel depth information acquisition, set null as the callback method. This method can be executed regardless of the preview status or camera mode, you can execute by selecting your own timing. Registration is only canceled if null is registered as the callback method, or the object is removed. Note that the callback method is not canceled by canceling the preview or depth information acquisition. 99

104 6.9. Depth Information Acquisition Flow Details Figure 6-6 shows the mechanical status for the camera application (camera app) when acquiring depth information. You need to perform the following five steps to acquire depth information. (1) Set the camera mode to depth-only. (2) The preview starts after step (1). (3) Depth information acquisition starts after step (2). (4) Register the depth callback method at the optimal time. The camera app sets the camera mode, resolution, preview starts and transfers to preview status. If the preview starts immediately, depth information acquisition is stopped. Start depth information acquisition (startdepthstreaming) to transfer to the depth information acquisition status. The depth information acquisition can be used in the edof or depth-only mode. If the camera is in a mode that cannot acquire depth information (side by side or single-through), an exception is generated. If depth callback has already been registered during depth information acquisition, then this can be processed based on the depth information in the callback function. For registering depth callback, use the ondepthmap API for setdepthcallback and processing depth information. When returning to a depth information acquisition stop status, you will need to stop the depth information acquisition (stopdepthstreaming). When stopping a preview during the depth information acquisition, the depth information acquisition will be processed at the same time. 100

105 not ready previewing set parameters exception ready to preview receiving depth inactive start preview exit preview stop to recieve start to recieve exit preview receiving depth active receiving and treating depth data Figure 6-6 Mechanical status figure for depth information acquisition For depth-only mode, preview display is unavailable. Do not shoot images or execute preview data acquisition. Availability of depth information acquisition and previews is shown in the following table. Table 6-8 Depth information acquisition and preview availability Camera mode Depth Preview Preview data Notes information acquisition display acquisition side-by-side Preview only single-vga Preview only single-720 single-1080 single-5m depth-only Depth information only : Indicates that preview display may not be available depending on the resolution. 101

106 6.10. Sample Code This sample code is for preview data acquisition while displaying a preview at 1080p in Single 5 M mode. package jp.epson.moverio.bt2pro.test.cameratest; import java.io.file; import java.io.fileoutputstream; import java.io.ioexception; import java.lang.reflect.method; import java.text.simpledateformat; import java.util.arraylist; import java.util.calendar; import java.util.list; import java.util.stringtokenizer; import android.hardware.camera; import android.os.bundle; import android.os.environment; import android.app.activity; import android.content.contentresolver; import android.content.contentvalues; import android.util.log; import android.view.menu; import android.view.menuitem; import android.view.surfaceholder; import android.view.surfaceview; import android.view.view; import android.view.windowmanager; import android.widget.button; import android.provider.mediastore; import android.provider.mediastore.images; public class CameraTestActivity extends Activity { private String TAG = this.getclass().getname(); private Camera camera = null; private SurfaceHolder mholder = null; private byte[] mpreviewdata = new byte [1920*1080*3/2]; private byte[] mpreviewbuf = new byte [1920*1080*3/2]; private Object lockobject = new Object(); 102

107 @Override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_camera_test); // Full Screen getwindow().addflags(windowmanager.layoutparams.flag_fullscreen); getwindow().addflags(0x ); } // Camera preview SurfaceView camerapreview = (SurfaceView) findviewbyid(r.id.preview); camerapreview.getholder().addcallback(previewcallback); camerapreview.getholder().settype(surfaceholder.surface_type_push_buffers); mholder = camerapreview.getholder(); /*Image data acquisition call back*/ private Camera.PreviewCallback mpreviewcb = new Camera.PreviewCallback() public void onpreviewframe(byte data[], Camera camera) { synchronized (lockobject) { mpreviewdata = data; } camera.addcallbackbuffer(mpreviewbuf); } protected void ondestroy(){ super.ondestroy(); Log.e(TAG,"onDestroy"); } private SurfaceHolder.Callback previewcallback = new SurfaceHolder.Callback() public void surfacedestroyed(surfaceholder holder) { Log.d(TAG,"surfaceDestroyed"); camera.stoppreview(); camera.release(); camera = null; } 103

108 @Override public void surfacecreated(surfaceholder holder) { Log.d(TAG,"surfaceDestroyed"); try{ camera = Camera.open(); camera.setpreviewdisplay(holder); }catch(runtimeexception e){ e.printstacktrace(); } camera.addcallbackbuffer(mpreviewbuf); camera.setpreviewcallbackwithbuffer(mpreviewcb); public void surfacechanged(surfaceholder holder, int format, int width, int height) { /*End Depth information acquisition*/ camera.stopdepthstreaming(); camera.stoppreview(); Camera.Parameters params = camera.getparameters(); /*Set camera mode to Single 5 M mode*/ params.setepsoncameramode(epson_camera_mode_ SINGLE_THROUGH-5M); /*Set preview resolution to 1080p*/ params.setpreviewsize(1920, 1080); /*Apply parameter changes to camera device*/ camera.setparameters(params); }; } camera.addcallbackbuffer(mpreviewdata); camera.setpreviewcallbackwithbuffer(mpreviewcb); try{ camera.startpreview(); }catch(runtimeexception e){ e.printstacktrace(); } 104

109 @Override public boolean oncreateoptionsmenu(menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getmenuinflater().inflate(r.menu.camera_test, menu); return true; } boolean ret = public boolean onoptionsitemselected(menuitem item) { Log.e(TAG, "onoptionsitemselected"); return ret; } } 105

110 6.11. Remarks 1) After closing the camera app, the system executes deallocation processing in the background for the camera. If the camera is used again soon after, an error may occur. Make sure that the camera is not reconnected within three seconds of camera deallocation. 2) The main use for the BT-2000 camera is for monitoring. It is possible to shoot images, but make sure continuous shooting is not allowed in a short period of time. Note that an error may occur when shooting continuously in a short period of time. 3) After setting the camera mode, frame rate, preview resolution, sharpness value, and contrast value, be sure to perform setparameters. Changed content is not reflected in the camera device until setparameters is executed. 4) Exposure and white balance are set manually. As this cannot be set automatically, make settings according to your usage environment. 5) The parameters for associated frame rates and preview resolutions will not change even if you set the camera mode in setepsoncameramode. Set these parameters using appropriate combinations before executing setparameters. 6) When the preview has already started, use stoppreview to temporarily stop the preview, and then execute setparameters. 7) Each camera mode has a limited combination of preview resolutions and frame rates. Note that a run-time exception will occur in setparameters for combinations that exceed the limit. 8) You cannot set 5M or side by side as the preview resolution. If you want to acquire images in 5M or side by side, perform shooting by using tekepicture. 9) PreviewCallback cannot guarantee the actual time of image acquisition. If there are a high volume of calculations being performed in onpreviewframe, and these are not completed by the time of the next image data acquisition, the next image data will be corrupted. We recommend acquiring image data through a sub-thread. 10) You need to restart the the application if the application closes in a RuntimeException 106

111 Android standard camera API Camera.Parameters Class Below shows Android standard camera API (Camera.Parameters Class) that can use in BT-2000 For details of each API, please refer to Android API level 15 specification. No. Android standard API(Camera.Parameters) Can use in BT flatten() 2 get(string key) 3 getantibanding() 4 getautoexposurelock() 5 getautowhitebalancelock() 6 getcoloreffect() 7 getexposurecompensation() 8 getexposurecompensationstep() 9 getflashmode() 10 getfocallength() 11 getfocusareas() 12 getfocusdistances(float[] output) 13 getfocusmode() 14 gethorizontalviewangle() 15 getint(string key) 16 getjpegquality() 17 getjpegthumbnailquality() 18 getjpegthumbnailsize() 19 getmaxexposurecompensation() 20 getmaxnumdetectedfaces() 21 getmaxnumfocusareas() 22 getmaxnummeteringareas() 23 getmaxzoom() 24 getmeteringareas() 25 getminexposurecompensation() 26 getpictureformat() 27 getpicturesize() 28 getpreferredpreviewsizeforvideo() 29 getpreviewformat() 30 getpreviewfpsrange(int[] range) 31 getpreviewframerate() 32 getpreviewsize() 33 getscenemode() 34 getsupportedantibanding() 35 getsupportedcoloreffects() 36 getsupportedflashmodes() 37 getsupportedfocusmodes() 38 getsupportedjpegthumbnailsizes() 39 getsupportedpictureformats() 40 getsupportedpicturesizes() 41 getsupportedpreviewformats() 42 getsupportedpreviewfpsrange() 107

112 No. Android standard API(Camera.Parameters) Can use in BT getsupportedpreviewframerates() 44 getsupportedpreviewsizes() 45 getsupportedscenemodes() 46 getsupportedvideosizes() 47 getsupportedwhitebalance() 48 getverticalviewangle() 49 getvideostabilization() 50 getwhitebalance() 51 getzoom() 52 getzoomratios() 53 isautoexposurelocksupported() 54 isautowhitebalancelocksupported() 55 issmoothzoomsupported() 56 isvideosnapshotsupported() 57 isvideostabilizationsupported() 58 iszoomsupported() 59 remove(string key) 60 removegpsdata() 61 set(string key, int value) 62 set(string key, String value) 63 setantibanding(string antibanding) 64 setautoexposurelock(boolean toggle) 65 setautowhitebalancelock(boolean toggle) 66 setcoloreffect(string value) 67 setexposurecompensation(int value) 68 setflashmode(string value) 69 setfocusareas(list<camera.area> focusareas) 70 setfocusmode(string value) 71 setgpsaltitude(double altitude) 72 setgpslatitude(double latitude) 73 setgpslongitude(double longitude) 74 setgpsprocessingmethod(string processing_method) 75 setgpstimestamp(long timestamp) 76 setjpegquality(int quality) 77 setjpegthumbnailquality(int quality) 78 setjpegthumbnailsize(int width, int height) 79 setmeteringareas(list<camera.area> meteringareas) 80 setpictureformat(int pixel_format) 81 setpicturesize(int width, int height) 82 setpreviewformat(int pixel_format) 83 setpreviewfpsrange(int min, int max) 84 setpreviewframerate(int fps) 85 setpreviewsize(int width, int height) 86 setrecordinghint(boolean hint) 87 setrotation(int rotation) 88 setscenemode(string value) 108

113 No. Android standard API(Camera.Parameters) Can use in BT setvideostabilization(boolean toggle) 90 setwhitebalance(string value) 91 setzoom(int value) 92 unflatten(string flattened) 109

114 7. Sensor control 110

115 7.1. Sensor control summary The BT-2000 is equipped with an IMU (high precision, high stability inertia measurement unit), a geomagnetic sensor, and an ALS (ambient light sensor). Tap detection and azimuth detection are also available IMU and the geomagnetic sensor The BT-2000 is equipped with an IMU and a geomagnetic sensor. The IMU can detect tri-axis acceleration and tri-axis angular velocity. The IMU allows high precision stance detection. There is also a built-in tri-axis geomagnetic sensor which combined with the IMU allows for azimuth calculations. +X +Y +Z The following shows the specifications for the IMU and the geomagnetic sensor. Sampling rate* Range IMU Acceleration Max. 125 Hz ±5.8 G Angular velocity Max. 125 Hz ±450 deg/s Geomagnetic sensor Max. 100 Hz ±1200 μt * When the load on the system is high, the sampling rate may not reach the specified maximum. 111

116 ALS The BT-2000 is equipped with an ALS (ambient light sensor). This sensor allows the device to acquire the ambient light for the user's surroundings. Also, the BT-2000 is equipped with automatic optics that auto adjust the display brightness according to the user's surroundings. The following shows the specifications for the ALS. Sampling rate* Range ALS Approx. 1[Hz] 0 to lx * When the load on the system is high, the sampling rate may not reach the specified maximum. 112

117 Headset tap detection The headset for the BT-2000 is equipped with a tap detection function. The headset's tap detection function acts as an input device for the user. For example, this can be used to change screen information. 113

118 7.2. Using the sensor The sensor uses the standard Android API, SensorEventListener. The following lists the available sensor types and usage examples Sensor type The BT-2000 can use the following sensors. The following sesnor types are also defined in the Android Sensor class. Sensor type ID (Hex) Constant name IMU Accelerometer 0x TYPE_ACCELEROMETER Gyroscope 0x TYPE_GYROSCOPE Geomagnetic sensor Geomagnetic sensor 0x TYPE_MAGNETIC_FIELD ALS Sensor Illumination 0x TYPE_LIGHT Others Tap detection 0x TYPE_HEADSET_TAP Azimuth detection 0x TYPE_ORIENTATION * You can acquire the above from the Android Sensor class. 114

119 7.3. Using SensorEventListener It is necessary to implement SensorEventListener for sensors using Activity or Service. Example: Implementing SensorEventListener in Activity public class SampleActivity extends Activity implements SensorEventListener Registering sensors being used When using a sensor, you need to register a sensor listener. Example) Registering an accelerometer //System sensor service acquisition SensorManager sm = (SensorManager)getSystemService(SENSOR_SERVICE); //Registering an accelerometer (TYPE_ACCELEROMETER) Sensor s = sm.getdefaultsensor(sensor.type_accelerometer); sm.registerlistener(this, s, SensorManager.SENSOR_DELAY_NORMAL); Acquiring a sensor value You can use the sensor value by acquiring a sensor event in onsensorchanged for SensorEventListener. Example) Acquiring a sensor value for the public void onsensorchanged(sensorevent event) { //Acquiring the accelerometer value (display log) if(event.sensor.gettype() == Sensor.TYPE_ACCELEROMETER){ Log.d("Sample","ax="+event.values[0]+",ay="+event.values[1]+",az="+event.values[2]); } } 115

120 8. Bluetooth/BLE 116

121 8.1. Pre-cautions for developing Apps using BLE BT-2000 is adopting EPSON original BLE control API, so you can not use BLE control API provided by Google. Therefore you can not divert App or source code that is operating with other Android equipment. For detail limited items, please refer to chapter

122 8.2. Summary This chapter explains the Bluetooth/BLE function built into the MOVERIO Pro BT The BT-2000 supports Bluetooth 4.0 LE, and in addition to the conventional Bluetooth 3.0+HS function, it also supports LowEnergy. For convenience, this section describes the Bluetooth 3.0+HS Bluetooth Legacy and the LowEnergy BLE Supported specifications Bluetooth Legacy specifications This describes the Bluetooth Legacy specifications for the BT Table 8-1 Bluetooth Legacy module and protocol stack Item Specifications Module specifications Bluetooth3.0 + HS (Bluetooth Class2) Protocol stack specifications Based on Core Spec Version 3.0 Table 8-2 Bluetooth Legacy protocol support Profile Role Version Headset Profile(HSP) Audio Gateway 1.1 Advanced Audio Distribution Profile(A2DP) Source 1.2 Human Interface Device(HID) Host 1.0 Object Push Profile(OPP) Client/Server 1.1 Serial Port Profile(SPP) Device A/Device B 1.2 Audio/Video Remote Control Profile(AVRCP) Target 1.0 Audio/Video Control Transport Protocol(AVCTP) Target 1.3 Audio/Video Distribution Transport Protocol(AVDTP) Source/Acceptor/Initiator 1.2 Generic Audio Video Distribution Profile(GAVDP) Acceptor/Initiator

123 BLE specifications This describes the BLE specifications for the BT Table 8-3 BLE protocol stack specifications Item Protocol stack specifications Specifications Based on Core Spec Version 4.1 (Low Energy Host) Table 8-4 BLE protocol support Profile Role Version Find Me Profile(FMP) Locator 1.0 Proximity Profile(PXP) Monitor 1.0 * New profiles can be supported through applications you delevop for the user. BLE Beacon function The BLE Beacon function detects Beacon devices within communication range using the Advertise function for GAP (General Access Profile), not the function described in the BLE profile. When the BT-2000 is within the Bluetooth communication area for a Beacon device, the Beacon device is detected using Advertise data being broadcast by the Beacon device (note 1), and then calculates the distance from the Beacon device using the strength of the radio waves. Note 1) If the Beacon device supports the ibeacon standards, the device can determine Immediate/Near/Far from the RSSI value. If the device does not support the ibeacon standards, the distance need to be calculated from the RSSI value. Beacon Beacon Bluetooth communication area Figure 8-1 Image of BLE Beacon usage 119

124 8.3. Usage method This section describes how to use Bluetooth Legacy and BLE Using Bluetooth Legacy You can use Bluetooth Legacy for the BT-2000 from [Bluetooth] in the [Settings] app. ON/OFF switch (1) ON/OFF switch (2) Figure 8-2 Bluetooth Legacy Settings screen Turning Bluetooth Legacy ON/OFF To turn on the Bluetooth Legacy function, move your cursor over the ON/OFF switch (2), and then press the select button Searching using Bluetooth Legacy Press the [Search for Devices] button to search for Bluetooth Legacy devices in the area Connecting using Bluetooth Legacy You can select the device you want to connect to in [Available Devices], and then perform pairing Disconnecting using Bluetooth Legacy You can select the device you want to disconnect from in [Paired Devices], and then disconnect. 120

125 Using BLE To test the BLE function for the BT-2000, sample BLEBeacon and PXP/FMP applications have been preinstalled. Refer to these sample applications when developing a BLE application for the user. The following explains how to use the sample applications Using the BLEBeacon sample application Select the BLEBeacon icon from the app list. Figure 8-3 BLEBeacon icon BLE turns on automatically when the app starts, and the BLE icon is displayed in the notification area. Figure 8-4 BLEBeacon app screen Table 8-5 BLEBeacon app screen composition Item Explanation Scan Start Starts scanning for the BLE Beacon. Scan Stop Stops scanning for the BLE Beacon. Address Displays the Bluetooth Device Address. Device Name(m/n) Displays the Device Name and the Major/Minor numbers. * Depends on the Advertise data configuration from the Beacon. Distance Displays the determined distance and RSSI value Note 2) 121

126 Determining distance for the BLEBeacon You need to perform distance determination for the BT-2000 and the Beacon in the app. Distance determination is calculated based on the Measured Power included in the Advertise data by the BLEBeacon app. Since Measured Power support varies depending on the Beacon manufacturer, you will need to decide whether or not ("Use" or "Do not use") to use the distance determination based on Measured Power supplied by the company identifier in the BLEBeacon app. Distance is determined from the Measured Power and RSSI value as shown below. Table 8-6 Determining distance for the BLEBeacon app Determination result RSSI value (when Measured Power for the Beacon is set to -70) Immediate 127 to -70 (=Measured Power) Near -51 to -90 (=Measured Power - 20) Far -91 to 128 Could not receive Advertise data for more than three seconds Unknown Or the company identifier was not Apple (0x004C) or Nordic (0x0059). 122

127 Using the FMP_PXP sample application Select the FMP_PXP icon from the app list. *This application still includes some Japanese language. Please reference the following translation notes as your reference when you use this application. Figure 8-5 BLEBeacon icon Check the ON/OFF status for the BLE when the app starts, and then displays a confirmation dialog if BLE is not ON. Bluetooth Low Energy is unenabled. Do you want to enable Bluetooth Low Energy? Figure 8-6 BLE confirmation dialog Please push Scan Start botton. Target service selection Target conection device Authentication method Figure 8-7 FMP_PXP app Scan screen composition 123

128 Table 8-7 FMP_PXP app Scan screen composition Item Scan Start Scan Stop Connect Disconnect Clear Authentication method Select search service DiscPriSrvByUUID DiscAllPriSrv ProfileActivity Explanation Starts scanning for the BLE device. Stops scanning for the BLE device. Starts connecting. Starts disconnecting. Clears the list. Select the authentication method. - Just Works - Passkey Entry Select the service that you want to use to search from the services included with the connected device. - Immediate Alert Service - Tx Power Service - Link Loss Service From the list of services on the connected device, select the Service you want from [Select search service]. Displays all services for the connected device. Displays ProfileActivity based on information for the connected device. Authenticating using Passkey Entry When connecting to a BLE device that requires password authentication, execute Connect in Passkey Entry. One of the following pairing dialogs is displayed depending on the Passkey Entry connection. Pairing setting request of BLE Figure 8-8 FMP_PXP app Scan screen composition If you want the next device to pair, PasskeyDisplay DeviceName Please enter the following passkey to Remote Device. 6-digit number ( ) is acceptable only. If you want to set the PasskeyInput DeviceName as pairs, please enter the passkey necessary to the device. 124

129 Current Alert level Alert level setting Sub-Procedure setting Figure 8-9 FMP_PXP app Profile screen composition Table 8-8 FMP_PXP app Profile screen composition Item Set Alert Level Select Sub-procedure Current Alert Level Explanation Set one of the following as the BLE Device Alert Level. No Alert/Mid Alert/High Alert You can read the value for the selected sub-procedure. You can read the value set for the current Alert Level. 125

130 8.4. Remarks & Restrictions for BLE App Development BLE interface The BLE interface for the BT-2000 uses an original API that does not support the standard Android API. Therefore, when developing an application that uses BLE, use the SDK and original API provided by Epson. BLE ON/OFF BLE differs from Bluetooth Legacy in that the ON/OFF switch is not installed on the system (OS) in BLE. In applications that use BLE on the BT-2000, design so that the BLE function can be turned ON/OFF using EPSON original API. BLE API access from multiple applications Avoid designs that allow multiple BLE applications to access the BLE API at the same time. Data may not be exchanged depending on the timing. Using the BLE API We do not recommend designs in which the BLE API is called in the Advertise notification callback function (onscanresult). 126

131 8.5. Import module To use EPSON original BLE control API, use SDK for BT-2000 provided by EPSON, and import the following modules. import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlechipcode; import android.bluetooth.bluetoothleerrorcodedescription; import android.bluetooth.bluetoothlegapcallback; import android.bluetooth.bluetoothlegapcallback.addrtype; import android.bluetooth.bluetoothlegapcallback.authtype; import android.bluetooth.bluetoothlegapevtauthstatus; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; import android.bluetooth.bluetoothlegattservice; import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapcallback.passkeytype; 127

132 8.6. Application interface list Tables 8-9, 8-10, and 8-11 provide a list of application interfaces. Table 8-9 android.bluetooth.bluetoothleadaptermanager for application interface list NO. Function name Function summary 1 getinstance Acquires instance. 2 isenable Acquires enable/disable status for BLE. 3 enable Enables BLE. 4 disable Disables BLE. 5 startscan Starts scanning for the BLE. 6 stopscan Stops scanning for the BLE. 7 getdevicename Acquires the local device name. 8 getbdaddress Acquires the local BD device. 9 connect Starts connecting to the BLE device. 10 connectcancel Cancels connecting to the BLE device. 11 disconnect Disconnects from the BLE device. 12 setauthtype Sets the authentication type. 13 notifyinputpasskey Sets the Padd Key entry. 14 setgapcallback Registers a callback for the GAP function. 15 discprisrv(char) Searches for the Primary Service for the BLE device. 16 discchar Searches for the Characteristic for the BLE device. 17 discchardesc Searches for the Characteristic Description for the BLE device. 18 readgatt Acquires the Characteristic Value and the Characteristic Descriptor. 19 readuuidgatt Acquires the Characteristic Value for the set UUID. 20 writewithoutrspgatt Writes the Characteristic Value (without a response) 21 writegatt Writes the Characteristic Value and the Characteristic Descriptor. 22 confirmation Executes an Indication response. 23 setgattcallback Registers a callback for the GAP function. 128

133 Table 8-10 android.bluetooth.bluetoothlegapcallback for application interface list NO. Callback function Function summary name. 24 onscanresult Callback function for scan results (Advertise data) reception. 25 onconnectresult Callback function for connection results reception. 26 ondisconnectresult Callback function for disconnection results reception. 27 onpasskeyinput Callback function for Pass Key input results reception. 28 onpasskeydisplay Callback function for Pass Key display results reception. Table 8-11 android.bluetooth.bluetoothlegattcallback for application interface list NO. Callback function name. Function summary 29 ondiscprisrvresult Callback function for search results reception for Primary Service. 30 ondisccharresult Callback function for search results reception for Characteristic. 31 ondiscchardescresult Callback function for search results reception for Characteristic Descriptor. 32 onreadgattresult Callback function for acquisition results reception for Characteristic Value. 33 onreaduuidgattresult Callback function for acquisition results reception for Characteristic Value. 34 onwritegattresult Callback for writing results reception for Characteristic Value. 35 hvxevt Callback function for reception of Indication/Notification 129

134 8.7. Supported GATT procedure table The following shows a list of Bluetooth GATT procedures and supported BLE API procedures. Table 8-12 Supported GATT procedure for BLE API table GATT Procedure GATT Sub-Procedure Functions that support BLE API Server Configuration Exchange MTU Not supported Discover All Primary Services discprisrv(char) Primary Service Discovery discprisrv(char, Discover Primary Services By Service UUID byte[]) Relationship Discovery Find Included Services Not supported Characteristic Discovery Discover All Characteristic of a Service discchar Discover All Characteristic by UUID Not supported Characteristic Descriptor Discovery Discover All Characteristic Descriptors discchardesc Read Characteristic Value readgatt(char) Characteristic Value Read Characteristic Value Write Characteristic Value Notification Characteristic Value Indication Characteristic Descriptor Value Write Read Using Characteristic UUID readuuidgatt Read Long Characteristic Values readgatt(char, char) Read Multiple Characteristic Values Not supported Write Without Response writewithoutrspgat t Signed Write Without Response Not supported Write Characteristic Value writegatt Write Long Characteristic Values Not supported Characteristic Value Reliable Writes Not supported Notifications BluetoothLeGattCall back.hvxevt BluetoothLeGattCall Indications back.hvxevt, confirmation Write Characteristic Descriptors writegatt Write Long Characteristic Descriptors Not supported 130

135 8.8. Application interface details getinstance Function Acquire instances in the BluetoothLeAdapterManager class. Format BluetoothLeAdapterManager BluetoothLeAdapterManager getinstance(void); Parameters None Return value Model BluetoothLeAdapterManager Explanation Except for NULL: Instances in the BluetoothLeAdapterManager class. NULL: Fails to acquire instance isenable Function Acquire BLE status (enabled or disabled). Format boolean isenable(void); Parameters None Return value Model boolean Explanation true: BLE enable false: BLE disable 131

136 enable Function Enable BLE. Format boolean enable(void); Parameters None Return value Model boolean Explanation true: success false: fail disable Function Disable BLE. Format boolean disable(void); Parameters None Return value Model boolean Explanation true: success false: fail 132

137 startscan Function Start the BLE scan (Advertise reception). Format void startscan(void); Parameters None Return value None Usage method To receive scan results (Advertise data), you need to register the callback function in setgapcallback in advance. The following callback function sends a notification for received Advertise data. BluetoothLeGapCallback.onScanResult 133

138 stopscan Function Stop the BLE scan (Advertise reception). Format void stopscan(void); Parameters None Return value None getdevicename Function Acquire the local device name. Format String getdevicename(void); Parameters None Return value Model String Explanation Except for NULL: local device name. NULL: Fail 134

139 getbdaddress Function Acquire the local BD device. Format String getbdaddress (void); Parameters None Return value Model String Explanation Except for NULL: local BD device. (Text strings that include colons in the format: 11:22:33:44:55:66 ) NULL: Fail 135

140 connect Function Specify the partner BD address (remote BD address), connection timeout, and the number of times to retry, and then connect. Format int connect(addrtype addrtype, String addr, int timeout, int retryreconnect); Parameter Model name AddrType addrtype String int timeout int retryreconnect Explanation Remote BD address classification *See "BD address classification" for more details Remote BD address Timeout time (ms) Set from 120 to ms in increments of 10 ms. Number of retry times Return value Model Explanation int BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.BaseError.INVALID_PARAM: invalid parameter BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid remote BD address BluetoothLeChipCode.BaseError.NO_MEM: maximum connections BluetoothLeChipCode.BaseError.BUSY: system busy status Usage method To receive connection processing results, you need to register the callback function in setgapcallback in advance. The following callback function sends a notification for connection processing results. BluetoothLeGapCallback.onConnectResult 136

141 BD address classification Value BluetoothLeGapCallback.AddrType.PUBLIC BluetoothLeGapCallback.AddrType.RANDOM_STATIC BluetoothLeGapCallback.AddrType.RANDOM_PRIVATE_RESOLVABLE BluetoothLeGapCallback.AddrType.RANDOM_PRIVATE_NON_RESOLVABLE Explanation Public Random 137

142 connectcancel Function Connection canceled while connecting to the BLE device. Format int connectcancel(void); Parameter Model name None Explanation Return value Model Int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status 138

143 disconnect Function Specify the partner BD address (remote BD address), connection timeout, and the number of times to retry, and then connect. Format int disconnect(char connectedhandle, byte hci_status_code) Parameter Model name char connectedhandle byte hci_status_code Explanation Connection handle * Specify the connection handle (ConnectedHandle) in the connected status (connstatus) acquired in onconnectresult. Status code Normally, the following is specified. BluetoothLeErrorCodeDescription.SigDefinition. REMOTE_USER_TERMINATED_CONNECTION * Specify the following if there is a connection parameter tat is not allowed. BluetoothLeErrorCodeDescription.SigDefinition. CONN_INTERVAL_UNACCEPTABLE Return value l Mode Int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_PARAM: invalid parameter BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Usage method To receive disconnection processing results, you need to register the callback function in setgapcallback in advance. The following callback function sends a notification for disconnection processing results. BluetoothLeGapCallback.onDisconnectResult 139

144 setauthtype Function Set authentication classification. Format boolean setauthtype(authtype authtype); Parameter Model name AuthType authtype Explanation Authentication classification Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_PARAM: invalid parameter BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Authentication classification Value BluetoothLeGapCallback.AuthType.JUSTWORKS BluetoothLeGapCallback.AuthType.PASSKEYENTRY Explanation Omit pin code PIN code authention 140

145 notifyinputpasskey Function Register a pass key. Format int notifyinputpasskey(passkeytype passkeytype, String passkey); Parameter Model name PassKeyType passkeytype String passkey Explanation Passkey type Key string Return value Model Explanation int BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_PARAM: invalid parameter BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Pass key type Value BluetoothLeGapCallback.PassKeyType.NONE BluetoothLeGapCallback.PassKeyType.PASSKEY Explanation None PIN code 141

146 setgapcallback Function Register the BluetoothLeGapCallback class where the callback function used for GAP functions is mounted. Format void setgapcallback(bluetoothlegapcallback callback); Parameter Model name BluetoothLeGapCallback callback Explanation Callback class Return value None Callback function used for GAP functions See the callback function descriptions in to for information on the callback function for GAP functions that can be registered to the BluetoothLeGapCallback class. 142

147 discprisrv Function Start searching the connected BLE device for a Primary Service. Use format -2 when specifying a UUID and searching for the Primary Service. Format -1 int discprisrv(char connectedhandle, char findstarthandle); Format -2 int discprisrv(char connectedhandle, char findstarthandle, byte[] uuid); Parameter Model name char connectedhandle char findstarthandle byte[] uuid Explanation Connection handle Handle location for starting the search UUID for search target Return value Model Explanation int BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_PARAM: invalid parameter BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.BUSY: system busy status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Usage method To receive search results, you need to register the callback function in setgattcallback in advance. The following callback function sends a notification for search results. BluetoothLeGattCallback.onDiscPriSrvResult 143

148 discchar Function Start searching the connected BLE device for Characteristics. Format int discchar(char connectedhandle, char starthandle, char endhandle); Parameter Model name char connectedhandle char starthandle char endhandle Explanation Connection handle Handle location for starting the search Handle location for ending the search Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.BUSY: system busy status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE:invalid connection handle Usage method To receive search results, you need to register the callback function in setgattcallback in advance. The following callback function sends a notification for search results. BluetoothLeGattCallback.onDiscCharResult 144

149 discchardesc Function Start searching the connected BLE device for Characteristic Descriptors. Format int discchardesc(char connectedhandle, char starthandle, char endhandle); Parameter Model name char connectedhandle char starthandle char endhandle Explanation Connection handle Handle location for starting the search Handle location for ending the search Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.BUSY: system busy status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Usage method To receive search results, you need to register the callback function in setgattcallback in advance. The following callback function sends a notification for search results. BluetoothLeGattCallback.onDiscCharDescResult 145

150 readgatt Function Start acquiring Characteristic Values/Characteristic Descriptors for the connected BLE device. Use format -2 when handling Characteristic Values/Characteristic Descriptors with a long data length. Format -1 int readgatt(char connectedhandle, char handle); Format -2 int readgatt(char connectedhandle, char handle, char offset); Parameter Model name char connectedhandle char handle char offset Explanation Connection handle Handle location for Charcteristic Value Reading location for the value Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.BUSY: system busy status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Usage method To receive search results, you need to register the callback function in setgattcallback in advance. The following callback function sends a notification for search results. BluetoothLeGattCallback.onReadGattResult 146

151 readuuidgatt Function Start acquiring Characteristic Values for the connected BLE device according to the specified UUID. Format int readuuidgatt(char connectedhandle,byte[] uuid, char starthandle, char endhandle); Parameter Model name char connectedhandle byte[] uuid char starthandle char endhandle Explanation Connection handle UUID for acquisition target Characteristic Handle location for starting the search Handle location for ending the search Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.BUSY: system busy status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Usage method To receive search results, you need to register the callback function in setgattcallback in advance. The following callback function sends a notification for search results. BluetoothLeGattCallback.onReadUuidGattResult 147

152 writewithoutrspgatt Function Write to for the Characteristic Value specified with the handle. No result notification through a callback. Format int writewithoutrspgatt(char connectedhandle, char handle, byte[] value); Parameter Model name char connectedhandle char handle byte[] value Explanation Connection handle Handle location for Characteristic Value Written value Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.BUSY: system busy status BluetoothLeChipCode.BaseError.INVALID_PARAM: invalid parameter BluetoothLeChipCode.BaseError.DATA_SIZE: exceeded data size BluetoothLeChipCode.BaseError.NO_TX_BUFFERS: exceeded buffer capacity BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle 148

153 writegatt Function Write to for the Characteristic Value specified with the handle. Format int writegatt(char connectedhandle, char handle, byte[] value); Parameter Model name char connectedhandle char handle byte[] value Explanation Connection handle Handle location for Characteristic Value Written value Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_ADDR: invalid memory address BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.BaseError.BUSY: system busy status BluetoothLeChipCode.BaseError.INVALID_PARAM: invalid parameter BluetoothLeChipCode.BaseError.DATA_SIZE: exceeded data size BluetoothLeChipCode.BaseError.NO_TX_BUFFERS: exceeded buffer capacity BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle Usage method To receive search results, you need to register the callback function in setgattcallback in advance. The following callback function sends a notification for search results. BluetoothLeGattCallback.onWriteGattResult 149

154 confirmation Function Response to Indication. Format int confirmation(char connectedhandle, char handle); Parameter Model name char connectedhandle char handle Explanation Connection handle Handle location for Characteristic Value Return value Model int Explanation BluetoothLeChipCode.SUCCESS: success BluetoothLeChipCode.BaseError.INVALID_STATE: invalid status BluetoothLeChipCode.STKError.INVALID_CONN_HANDLE: invalid connection handle BluetoothLeChipCode.STKError.INVALID_ATTR_HANDLE: invalid attribute handle 150

155 setgattcallback Function Register the BluetoothLeGattCallback class where the callback function used for GATT functions is mounted. Format void setgattcallback(bluetoothlegattcallback callback); Parameter Model name BluetoothLeGattCallback callback Explanation Callback class Return value None Callback function for the GATT function See the callback function descriptions in to for information on the callback function for GATT functions that can be registered to the BluetoothLeGattCallback. 151

156 BluetoothLeGapCallback.onScanResult Function Provide an interface for the callback function to receive scan results (Advertise data). Use format -2 to acquire the scan response and the advertise type. Related API: startscan/stopscan Format -1 void onscanresult(addrtype addrtype, String addr, int rssi, byte[] adv_data); Format -2 void onscanresult(addrtype addrtype, String addr, int rssi, boolean scan_rsp, AdvType adv_type, byte[] adv_data); Parameter Model name AddrType addrtype String addr int rssi boolean scan_rsp AdvType adv_type byte[] adv_data Explanation Remote BD address classification Remote BD address Received radio wave strength (dbm) Scan response data true: Received PDU is SCAN_RSP false: Received PDU is anything except for SCAN_RSP Advertise type AdvType.ADV_IND AdvType.ADV_DIRECT_IND AdvType.ADV_SCAN_IND AdvType.ADV_NONCONN_IND AdvType.SCAN_RSP AdvType.UNKNOWN Advertise data (31octet) 152

157 BluetoothLeGapCallback.onConnectResult Function Provide an interface for the callback function to receive connection results for BLE. Related API: connect Format void onconnectresult(byte response, BluetoothLeGapEvtConnected connstatus, BluetoothLeGapEvtAuthStatus authstatus); Parameter Model name byte response BluetoothLeGapEvtConnected connstatus BluetoothLeGapEvtAuthStatus authstatus Explanation Connection information Connection complete status Since connection fails if a CONNECTION_TIMEOUT occurs, the value is undefined. Not supported. Do not use as value is undefined. 153

158 Connection information Connection information BluetoothLeErrorCodeDescription.SUCCESS BluetoothLeErrorCodeDescription.SigDefinition.CONNECTION_TIMEOUT BluetoothLeErrorCodeDescription.SigDefinition.REMOTE_USER_TERMINATED_CONNECTION BluetoothLeErrorCodeDescription.SigDefinition.CONNECTION_TERMINATED_BY_LOCAL_HOST BluetoothLeErrorCodeDescription.SigDefinition.LMP_LL_RESPONSE_TIMEOUT BluetoothLeErrorCodeDescription.SigDefinition.CONN_INTERVAL_UNACCEPTABLE BluetoothLeErrorCodeDescription.ChipDefinition.AUTHENTICATE_TIME_OUT BluetoothLeErrorCodeDescription.ChipDefinition.AUTHENTICATE_PDU_INVALID BluetoothLeErrorCodeDescription.ChipDefinition.CONNECTION_TIMEOUT BluetoothLeErrorCodeDescription.ChipDefinition.PASSKEY_ENTRY_FAILED BluetoothLeErrorCodeDescription.ChipDefinition.OUT_OF_BAND_KEY_NOT_AVAILABLE BluetoothLeErrorCodeDescription.ChipDefinition.AUTHENTICATION_REQUIREMENTS_NOT_MET BluetoothLeErrorCodeDescription.ChipDefinition.CONFIRM_VALUE_FAILED BluetoothLeErrorCodeDescription.ChipDefinition.PAIRING_NOT_SUPPORTED BluetoothLeErrorCodeDescription.ChipDefinition.ENCRYPTION_KEY_SIZE BluetoothLeErrorCodeDescription.ChipDefinition.UNSUPPORTED_SMP_COMMAND BluetoothLeErrorCodeDescription.ChipDefinition.UNSPECIFIED_REASON BluetoothLeErrorCodeDescription.ChipDefinition.TOO_LITTLE_TIME_ELAPSED_SINCE_LAST_ATTEMPT BluetoothLeErrorCodeDescription.ChipDefinition.INVALID_PARAMETERS BluetoothLeErrorCodeDescription.ChipDefinition.AUTHENTICATE_API_CALL_ERROR BluetoothLeErrorCodeDescription.ChipDefinition.RECEIVED_DISCONNECT_IN_AUTHENTICATING Connection complete status (class BluetoothLeGapEvtConnected) Member's name char connectedhandle byte addrtype byte[] addr BleConnectParams params Explanation Connection handle BD address classification BD address Connection parameter 154

159 BluetoothLeGapCallback.onDisconnectResult Function Provide an interface for the callback function to receive disconnection results for BLE. Related API: disconnect Format void ondisconnectresult(char connectedhandle, byte response, boolean reconnecting); Parameter Model name char connectedhandle byte response boolean reconnecting Explanation Connection handle Disconnection reason Flag during reconnecting true: During reconnecting false: not reconnecting Disconnection reason Disconnection reason BluetoothLeErrorCodeDescription.SigDefinition.CONNECTION_TIMEOUT BluetoothLeErrorCodeDescription.SigDefinition.CONNECTION_TERMINATED_BY_LOCAL_HOST BluetoothLeErrorCodeDescription.SigDefinition.LMP_LL_RESPONSE_TIMEOUT are the main values. For details on other values, see "Specification of the Bluetooth System v4.1, Vol 2, Part D : Error Code Descriptions" 155

160 BluetoothLeGapCallback.onPasskeyInput Function Provide an interface for the callback function to confirm pass key input reception. Format void onpasskeyinput(passkeytype passkeytype); Parameter Model name PassKeyType passkeytype Explanation Pass key type Pass key type Value BluetoothLeGapCallback.PassKeyType.NONE BluetoothLeGapCallback.PassKeyType.PASSKEY Explanation None PIN code BluetoothLeGapCallback.onPasskeyDisplay Function Provide an interface for the callback function to display pass key reception. Format void onpasskeydisplay(string passkey); Parameter Model name String passkey Explanation Key string 156

161 BluetoothLeGattCallback.onDiscPriSrvResult Function Provide an interface for the callback function to receive search results for the Primary Service. Related API: discprisrv Format void ondiscprisrvresult(char connectedhandle, int status, BluetoothLeGattService[] data); Parameter Model name char connectedhandle int status BluetoothLeGattService[] data Explanation Connection handle Search results * Returns the value defined in BluetoothLeChipCode.GattStatus Service information Search results BluetoothLeChipCode.GattStatus definition public static class GattStatus { /** Success. */ public static final int BLE_GATT_STATUS_SUCCESS = 0x0000; /** Unknown or not applicable status. */ public static final int BLE_GATT_STATUS_UNKNOWN = 0x0001; /** ATT Error: Invalid Error Code. */ public static final int BLE_GATT_STATUS_ATTERR_INVALID = 0x0100; /** ATT Error: Invalid Attribute Handle. */ public static final int BLE_GATT_STATUS_ATTERR_INVALID_HANDLE = 0x0101; /** ATT Error: Read not permitted. */ public static final int BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED = 0x0102; /** ATT Error: Write not permitted. */ public static final int BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED = 0x0103; /** ATT Error: Used in ATT as Invalid PDU. */ public static final int BLE_GATT_STATUS_ATTERR_INVALID_PDU = 0x0104; /** ATT Error: Authenticated link required. */ public static final int BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION = 0x0105; /** ATT Error: Used in ATT as Request Not Supported. */ public static final int BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED = 0x0106; /** ATT Error: Offset specified was past the end of the attribute. */ public static final int BLE_GATT_STATUS_ATTERR_INVALID_OFFSET = 0x0107; /** ATT Error: Used in ATT as Insufficient Authorisation. */ public static final int BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION = 0x0108; /** ATT Error: Used in ATT as Prepare Queue Full. */ 157

162 public static final int BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL = 0x0109; /** ATT Error: Used in ATT as Attribute not found. */ public static final int BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND = 0x010A; /** ATT Error: Attribute cannot be read or written using read/write blob requests. */ public static final int BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG = 0x010B; /** ATT Error: Encryption key size used is insufficient. */ public static final int BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE = 0x010C; /** ATT Error: Invalid value size. */ public static final int BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH = 0x010D; /** ATT Error: Very unlikely error. */ public static final int BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR = 0x010E; /** ATT Error: Encrypted link required. */ public static final int BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION = 0x010F; /** ATT Error: Attribute type is not a supported grouping attribute. */ public static final int BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE = 0x0110; /** ATT Error: Encrypted link required. */ public static final int BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES = 0x0111; /** ATT Error: Reserved for Future Use range #1 begin. */ public static final int BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN = 0x0112; /** ATT Error: Reserved for Future Use range #1 end. */ public static final int BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END = 0x017F; /** ATT Error: Application range begin. */ public static final int BLE_GATT_STATUS_ATTERR_APP_BEGIN = 0x0180; /** ATT Error: Application range end. */ public static final int BLE_GATT_STATUS_ATTERR_APP_END = 0x019F; /** ATT Error: Reserved for Future Use range #2 begin. */ public static final int BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN = 0x01A0; /** ATT Error: Reserved for Future Use range #2 end. */ public static final int BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END = 0x01DF; /** ATT Error: Reserved for Future Use range #3 begin. */ public static final int BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN = 0x01E0; /** ATT Error: Reserved for Future Use range #3 end. */ public static final int BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END = 0x01FC; /** ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ public static final int BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR = 0x01FD; /** ATT Common Profile and Service Error: Procedure Already in Progress. */ public static final int BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG = 0x01FE; /** ATT Common Profile and Service Error: Out Of Range. */ public static final int BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE = 0x01FF; }; Service information (class BluetoothLeGattService) Member's name byte[] uuid char starthandle char endhandle Explanation UUID (16bit only) Start handle location End handle location 158

163 BluetoothLeGattCallback.onDiscCharResult Function Provide an interface for the callback function to receive search results for the Characteristic. Related API: discchar Format void ondisccharresult(char connectedhandle, int status, BluetoothLeGattChar[] data); Parameter Model name char connectedhandle int status BluetoothLeGattChar[] data Explanation Connection handle Search results * Returns the value defined in BluetoothLeChipCode.GattStatus Characteristic information Characteristic information (class BluetoothLeGattChar) Member's name byte[] uuid char handledecl char handlevalue CharacteristicProperties properties Explanation UUID (16bit only) Handle for Characteristic Declaration Handle for Characteristic Value Characteristic setting information Characteristic setting information (class BluetoothLeGattChar.CharacteristicProperties) Function name boolean IsBrodcast() boolean IsRead() IsWriteWoResp() IsWrite() IsNofify() IsIndicate() Explanation Determine if anything is broadcast Determine readgatt/readuuidgatt Determine writewithoutrspgatt Determine writegatt Determine Notification Determine Indication 159

164 BluetoothLeGattCallback.onDiscCharDescResult Function Provide an interface for the callback function to receive search results for the Characteristic Descriptor. Related API: discchardesc Format void ondiscchardescresult(char connectedhandle, int status, BluetoothLeGattDesc[] data); Parameter Model name char connectedhandle int status BluetoothLeGattDesc[] data Explanation Connection handle Search results * Returns the value defined in BluetoothLeChipCode.GattStatus Characteristic Descriptor information Characteristic Descriptor information (class BluetoothLeGattDesc) Member's name byte[] uuid char handle Explanation Characteristic Descriptor UUID Handle for Characteristic Descriptor 160

165 BluetoothLeGattCallback.onReadGattResult Function Provide an interface for the callback function for acquisition results reception of Characteristic Value using readgatt API. Related API: readgatt Format void onreadgattresult(char connectedhandle, int status, BluetoothLeGattEvtReadRsp data); Parameter Model name char connectedhandle int status BluetoothLeGattEvtReadRsp data Explanation Connection handle Search results * Returns the value defined in BluetoothLeChipCode.GattStatus Read Response data Read Response data (class BluetoothLeGattEvtReadRsp) Member's name byte[] data char handle char offset Explanation Read Response data Handle Data offset 161

166 BluetoothLeGattCallback.onReadUuidGattResult Function Provide an interface for the callback function for acquisition results reception of Characteristic Value using readuuidgatt API. Related API: readuuidgatt Format void onreaduuidgattresult(char connectedhandle, int status, byte[] data); Parameter Model name char connectedhandle int status byte[] data Explanation Connection handle Search results * Returns the value defined in BluetoothLeChipCode.GattStatus Characteristic Value data 162

167 BluetoothLeGattCallback.onWriteGattResult Function Provide an interface for the callback function for writing results reception of Characteristic Value using writegattres API. Related API: writegattres Format void onwritegattresult(char connectedhandle, int status, BluetoothLeGattEvtWriteRsp data); Parameter Model name char connectedhandle int status BluetoothLeGattEvtWriteRsp data Explanation Connection handle Search results * Returns the value defined in BluetoothLeChipCode.GattStatus Write Response data Write Response data (class BluetoothLeGattEvtWriteRsp) Member's name byte[] data char handle char offset byte writeop Explanation Write data Handle Data offset Write operation code 163

168 BluetoothLeGattCallback.hvxEvt Function Provide an interface for the callback function to receive Indication/Notification using confirmation API. Related API: confirmation Format void hvxevt(char connectedhandle, int status, char handle, hvxevttype type, byte[] data); Parameter Model name char connectedhandle int status hvxevttype type byte[] data Explanation Connection handle Search results * Returns the value defined in BluetoothLeChipCode.GattStatus Indication/Notification classification Characteristic handle value 164

169 8.9. BLE Processing Sample Code When developing a BLE app, describe the sample code used in the BLE API Enabling BLE Call isenable() and acquire the current status. Since BLE is disabled when this function returns false, call enable() to enable BLE. // Instance acquisition for the BLE manager class BluetoothLeAdapterManager mmanager = BluetoothLeAdapterManager.getInstance(); if (! mmanager.isenable() ) { // BLE Off if (! mmanager.enable() ) { //Error processing: display error message for BLE-On failure } } else { // BLE On } Disabling BLE Call isenable() and acquire the current status. Since BLE is enabled when this function returns true, call disable() to disable BLE. // Instance acquisition for the BLE manager class BluetoothLeAdapterManager mmanager = BluetoothLeAdapterManager.getInstance(); if ( mmanager.isenable() ) { // BLE On if (! mmanager.disable() ) { //Error processing: display error message for BLE-Off failure } } else { // BLE Off } 165

170 Registering scan start and callback To start the Beacon function, register the callback function using setgapcallback() to receive Advertise from the Beacon device, and start scanning using startscan(). import android.widget.toast; public class MainActivity extends Activity { private BluetoothLeAdapterManager protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GAP function provided mmanager.setgapcallback(mlegapcallback); } private void scanle(final boolean enable) { if ( enable ) { //Start scanning mmanager.starscan(); } else { //Stop scanning mmanager.stopscan(); } } Receive scan results using the following callback, and output the received signal strength to a log. } private BluetoothLeGapCallback mlegapcallback = new public void onscanresult(addrtype addrtype, String addr, int rssi, byte[] adv_data) { Log.i( DEBUG, rssi= + rssi); } }; 166

171 Connecting and Disconnecting BLE The following provides an example of the processing for connecting and disconnecting BLE. Connecting: Enable GAP callback registration and scanning before connecting.connect using information in (addrtype, addr) in the scan results (onscanresult()). Disconnecting: Disconnect using the connection handle (connstatus.connectedhandle) in the connection results (onconnectresult()). import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; public class MainActivity extends Activity { private BluetoothLeAdapterManager mmanager; private boolean mconnectingflg = protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GAP function provided mmanager.setgapcallback (mlegapcallback); } private void connectle(final boolean enable) { if ( enable ) { //BLE connect //Set the addrtype and addr acquired in onscanresult mmanager.connect(addrtype, addr, 1000, 0); } else { //BLE disconnect //Set the connection handle ConnectedHandle in connected event status connstatus acquired in onconnectresult } } mmanager.disconnect(connectedhandle, REMOTE_USER_TERMINATED_CONNECTION); 167

172 Use the following callback to output logs when connecting and disconnecting. private BluetoothLeGapCallback mlegapcallback = new BluetoothLeGapCallback() public void onconnectresult(byte response, final BluetoothLeGapEvtConnected connstatus, BluetoothLeGapEvtAuthStatus authstatus) { Log.i( DEBUG, connectedhandle= + connstatus.connectedhandle); public void ondisconnectresult(char connectedhandle, byte response, boolean reconnecting) { Log.i( DEBUG, Disconnect ); }; }; 168

173 Searching for Primary Service You can search for the Primary Service on a connected BLE device byexecuting the callback function setgattcallback() and Primary Service search using discprisrv(). import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; public class MainActivity extends Activity { private BluetoothLeAdapterManager protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GATT function provided mmanager.setgattcallback(mlegattcallback); //Searching for Primary Service //Set the connection handle ConnectedHandle in connected event status connstatus acquired in onconnectresult } mmanager.discprisrv(connectedhandle, (char) 1); Use the following callback to output logs when a Primary Service is detected. } private BluetoothLeGattCallback mlegattcallback = new BluetoothLeGattCallback() public void ondiscprisrvresult(char connectedhandle, int status, BluetoothLeGattService[] data) { for (int cnt=0; cnt<data.length; cnt++) { Log.i( DEBUG, starthandle= + data[cnt].starthandle + endhandle= + data[cnt].endhandle); } }; }; 169

174 Searching for Characteristic You can search for the Characteristics on a connected BLE device byexecuting the callback function setgattcallback() and Characteristic search using discchar(). import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; public class MainActivity extends Activity { private BluetoothLeAdapterManager protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GATT function provided mmanager.setgattcallback(mlegattcallback); //Searching for Characteristic //Set StartHandle and EndHandle from the Service information acquired in ondiscprisrvresult } mmanager.discchar (ConnectedHandle, StartHandle, EndHandle); Use the following callback to output logs when a Characteristic is detected. } private BluetoothLeGattCallback mlegattcallback = new BluetoothLeGattCallback() public void ondisccharresult(char connectedhandle, int status, BluetoothLeGattChar[] data) { for (int cnt=0; cnt<data.length; cnt++) { Log.i( DEBUG, HandleValue= + data[cnt].handlevalue+ uuid= + data[cnt].uuid); } }; }; 170

175 Searching for Characteristic Descriptor You can search for the Characteristic Descriptor on a connected BLE device by executing the callback function setgattcallback() and Characteristic Descriptor search using discchardesc(). import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; public class MainActivity extends Activity { private BluetoothLeAdapterManager protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GATT function provided mmanager.setgattcallback(mlegattcallback); //Searching for Characteristic Descriptor //Set StartHandle and EndHandle from the acquired ondiscprisrvresult mmanager.discchardesc (ConnectedHandle, StartHandle, EndHandle); } Use the following callback to output logs when a Characteristic Descriptor is detected. private BluetoothLeGattCallback mlegattcallback = new BluetoothLeGattCallback() { } public void ondiscchardescresult (char connectedhandle, int status, BluetoothLeGattChar[] data) { for (int cnt=0; cnt<data.length; cnt++) { Log.i( DEBUG, HandleValue= + data[cnt].handlevalue + CharacteristicUuid= + data[cnt].uuid); } }; 171

176 Acquiring Characteristic Value by Specifying a Handle You can acquire the Characteristic Value on a connected BLE device by executing the callback function setgattcallback() and Characteristic Value acquisition using readgatt(). import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; public class MainActivity extends Activity { private BluetoothLeAdapterManager protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GATT function provided mmanager.setgattcallback(mlegattcallback); //Acquire (READ) Characteristic Value //Set the handle HandleValue in Characteristic Value from the Characteristic //information acquired in ondisccharresult() } mmanager.readgatt(connectedhandle, HandleValue) Use the following callback to output logs when a Characteristic Value is acquired. private BluetoothLeGattCallback mlegattcallback = new BluetoothLeGattCallback() { } public void onreadgattresult ( char status, BluetoothLeGattEvtReadRsp data) { Log.i( DEBUG, Characteristic Value= + data.data); } 172

177 Acquiring Characteristic Value by Specifying a UUID You can acquire the Characteristic Value on a connected BLE device by specifying a UUID. To do this execute the callback function registration using setgattcallback() and Characteristic Value acquisition using readuuidgatt(). import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; public class MainActivity extends Activity { private BluetoothLeAdapterManager protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GATT function provided mmanager.setgattcallback(mlegattcallback); //Acquire (READ) Characteristic Value //Set StartHandle and EndHandle from the acquired ondiscprisrvresult //Set the UUID for the Characteristic information acquired in // ondiscchardescresult mmanager.readuuidgatt(connectedhandle, Uuid, StartHandle, EndHandle); } Use the following callback to output logs when a Characteristic Value is acquired. private BluetoothLeGattCallback mlegattcallback = new BluetoothLeGattCallback() { } onreaduuidgattresult(char connectedhandle, int status, BluetoothLeGattEvtReadUuidRsp[] data) { Log.i( DEBUG, Characteristic Value= + data.data); } 173

178 Writing a Characteristic Value You can write the Characteristic Value to a connected BLE device by executing the callback function setgattcallback() and Characteristic Value writing using writegatt(). import android.bluetooth.bluetoothleadaptermanager; import android.bluetooth.bluetoothlegapevtconnected; import android.bluetooth.bluetoothlegattcallback; public class MainActivity extends Activity { private BluetoothLeAdapterManager protected void oncreate(bundle savedinstancestate) { //Instance acquisition for the BLE manager class mmanager = BluetoothLeAdapterManager.getInstance(); //Register a callback for the GATT function provided mmanager.setgattcallback(mlegattcallback); //Writing a Characteristic Value //Set the handle HandleValue in Characteristic Value from the Characteristic // information acquired in ondisccharresult() } mmanager.writegatt(connectedhandle, HandleValue, 0x01); Use the following callback to output logs when a Characteristic Value is written. private BluetoothLeGattCallback mlegattcallback = new BluetoothLeGattCallback() { } public void onwritegattresult(char connectedhandle, int status, BluetoothLeGattEvtWriteRsp data) { //Since the value written in writegatt is returned for confirmation, // no processing is performed Log.i( DEBUG, write ok ); } 174

179 9. Power control 175

180 9.1. Power control summary You can install two batteries in the BT-2000 and acquire power supply information. Power supply information The following power supply information types are defined in the Android BatteryManager class. Power supply type Battery Constant information type Power status Overall status of batteries int EXTRA_STATUS A/B Amount of power Amount of power remaining int EXTRA_LEVEL remaining in batteries A/B [%] AC adapter connection Info. on AC adapter int EXTRA_PLUGGED connected/disconnected Battery A status Status String EXTRA_STATUS_A Battery A installed Battery installed boolean EXTRA_PRESENT_A Amount of power Power remaining [%] int EXTRA_LEVEL_A remaining in battery A Battery A current Current [ma] int EXTRA_CURRENT_A Battery A voltage Voltage [mv] int EXTRA_VOLTAGE_A Battery A temperature Temperature [deg C] int EXTRA_TEMPERATURE_A Battery B status Status String EXTRA_STATUS_B Battery B installed Battery installed boolean EXTRA_PRESENT_B Amount of power Power remaining [%] int EXTRA_LEVEL_B remaining in battery B Battery B current Current [ma] int EXTRA_CURRENT_B Battery B voltage Voltage [mv] int EXTRA_VOLTAGE_B Battery B temperature Temperature [deg C] int EXTRA_TEMPERATURE_B 176

181 9.2. Acquiring Battery Information Use the Filter intent broadcast by the operating system, and acquire the battery information. Usage examples are displayed below. Register the receiver of the battery information broadcast by the app IntentFilter filter = new IntentFilter(); filter.addaction(intent.action_battery_changed); registerreceiver(mbroadcastreceiver, filter); Acquire broadcast battery information Example: Acquiring the amount of power remaining, status, and installation status for battery public void onreceive(context context, Intent intent){ int level_a = intent.getintextra(batterymanager.extra_level_a, 0); String status_a = intent.getstringextra(batterymanager.extra_status_a); boolean present_a = intent.getbooleanextra(batterymanager.extra_present_a, false); 177

182 10. Appendix 178

183 10.1. Self-diagnostic function Self-diagnostic function summary The BT-2000 is equipped with a self-diagnostic function to check the status of internal devices. You can check the following devices and content using the self-diagnostic function. Table 10-1 Confirmation items using the self-diagnostic function Device type Display name Diagnostic method CPU CPU Error check Power control IC PMIC Check power supply status Main memory (RAM) DDR Check RAM data Data memory (Flash) emmc Reading and writing to data region Wireless LAN module WLAN Check communication with device Bluetooth 3.0 Bluetooth Check communication with device Bluetooth Low Energy BLE Check communication with device Audio IC Audio IC Reading device information characteristics Audio commands IC Voice Command Reading device information characteristics Sensor Sensor MCU Communication check IMU sensor IMU Acquire sensor data Sensor Illumination Sensor Illumination Acquire sensor data Charger IC A Charger IC A Check status Charger IC B Charger IC B Check status Battery A Battery A Check status Battery B Battery B Check status The self-diagnostic function is a basic diagnostic tool. Be aware that it may not be able to locate faults in individual functions in the device.especially when some functions are not available. 179

184 Using the self-diagnostic function The self-diagnostic function is provided as an app. Start "SelfDiagnosis" from the app list. Figure 10-1 Start SelfDiagnosis app When the app starts, click the "Start Diag" button at the top of the screen to start the diagnostic procedure. Figure 10-2 Start SelfDiagnosis app screen 180

185 When the diagnosis has been performed, the results for each device are displayed. See table 10-1 above for details about the target items and the checking method. Figure 10-3 SelfDiagnosis check results 181

Developer's Guide SEKIO EPSON CORPORATION. MOVERIO Pro Developer's Guide (Rev.1.0)

Developer's Guide SEKIO EPSON CORPORATION. MOVERIO Pro Developer's Guide (Rev.1.0) Developer's Guide SEKIO EPSON CORPORATION Note the following points when using this guide. The content of this guide may change without prior notice. 1. Reprinting part or all of this guide without prior

More information

1. Introduction. MOVERIO Pro Developer's Guide (Rev.1.5) 1

1. Introduction. MOVERIO Pro Developer's Guide (Rev.1.5) 1 1. Introduction 1 1.1. Product Summary and Functions The BT-2000/2200 is a smart headset for business use. The same optical see-through technology as the consumer orientated MOVERIO BT-200 has been adopted.

More information

Developer's Guide SEIKO EPSON CORPORATION. MOVERIO Pro Developer's Guide (Rev.1.3)

Developer's Guide SEIKO EPSON CORPORATION. MOVERIO Pro Developer's Guide (Rev.1.3) Developer's Guide SEIKO EPSON CORPORATION Revision history Revision Item Mainly revised content Rev.1.3 4.1 Adding caution when changing key assign 6 Adding EDof mode and auto exposure function 11 Adding

More information

BT-2000 System Software Release Note(Ver.R1.2.1)

BT-2000 System Software Release Note(Ver.R1.2.1) BT2000 System Software Release Note(Ver.R1.2.1) 1. How to check the Release Version This Release Note is for BT2000 System Software Version R1.2.1. To check the System Software version using, follow below

More information

X1 Augmented Reality SmartGlasses Developer Guide

X1 Augmented Reality SmartGlasses Developer Guide X1 Smart Glasses Spec Sheet Ruggedized Military Technology for the Commercial World X1 Augmented Reality SmartGlasses Developer Guide Index 1. ThirdEye X1 Product and Software Overview 1.1 Android Platform

More information

Use apps Tap an app to open it. Customize the unit Arrange apps Touch and hold any app on the Home screen, then drag the app around. Drag an app to the edge of the screen to move it to a different Home

More information

VR Development Platform

VR Development Platform VR Development Platform The Qualcomm Snapdragon VR820 headset is a VR development platform based on the Qualcomm Snapdragon 820 (APQ8096) processor by Qualcomm Technologies, Inc. Quick Start Guide Most

More information

Embedded Application User Manual

Embedded Application User Manual [ProPTT2] Embedded Application User Manual v3.2 August 2018 This document describes usage instruction for ProPTT2 Android Embedded Application. Copyright IMPTT Inc. All right reserved. CONTENTS 1. Introduction...

More information

User Manual V K Camera with an Integrated 3-axis Gimbal

User Manual V K Camera with an Integrated 3-axis Gimbal User Manual V 1.1 4K Camera with an Integrated 3-axis Gimbal Table of Contents Introduction 3 At a Glance 3 Charging the Battery 4 Status Battery LED Indicator Description 4 Check the Battery Level 5 Insert

More information

1, Key features. Preface. Notes

1, Key features. Preface. Notes Car DVR User Manual Preface Thank you for purchasing this DVR, this device has a unique ultra-portable design; it can be used in various fields, to bring you convenient, safe, colorful daily life. Please

More information

700TSU INSTALLATION MANUAL

700TSU INSTALLATION MANUAL M 700TSU INSTALLATION MANUAL 2 Table of Contents Features...03 Specifications...04 Quick-Start...05 Remote Control...07 Hardware Installation...10 Software Installation...14 Touch Screen Driver Installation

More information

User Manual. PIXPRO Remote Viewer. KODAK PIXPRO Digital Cameras SMART LENS Cameras. Models: S-1/AZ651/AZ525/AZ526/AZ527/AZ652/AZ901 SL5/SL10/SL25

User Manual. PIXPRO Remote Viewer. KODAK PIXPRO Digital Cameras SMART LENS Cameras. Models: S-1/AZ651/AZ525/AZ526/AZ527/AZ652/AZ901 SL5/SL10/SL25 User Manual PIXPRO Remote Viewer For: KODAK PIXPRO Digital Cameras SMART LENS Cameras Models: S-1/AZ651/AZ525/AZ526/AZ527/AZ652/AZ901 SL5/SL10/SL25 Ver. 4.0 Before You Start Declaration of Conformity Responsible

More information

STUDIO 7.0 USER MANUAL

STUDIO 7.0 USER MANUAL STUDIO 7.0 USER MANUAL 1 Table of Contents Safety Information... 3 Appearance and Key Functions... 4 Introduction... 5 Call Functions... 6 Notifications Bar... 7 Contacts... 8 Messaging... 9 Internet Browser...

More information

DV 5470 User Manual Package Contents:

DV 5470 User Manual Package Contents: DV 5470 User Manual Package Contents: Manual Camera Pouch Installation CD Earbuds AV Cable CONTENTS 1. NOTICE...2 2. SETUP...3 2.1 BATTERY INSTALLATION...3 2.2 MEMORY CARD...4 2.3 CONFIGURATION & INSTALLATION...4

More information

App for a Smartphone or Tablet Terminal EXILIM Connect 3.0

App for a Smartphone or Tablet Terminal EXILIM Connect 3.0 App for a Smartphone or Tablet Terminal EXILIM Connect 3.0 User s Guide EN This manual uses a typical CASIO camera and smartphone for explanations. Certain details (display contents, etc.) may differ on

More information

Car DVR User Manual. 1, Key features. Preface. Notes

Car DVR User Manual. 1, Key features. Preface. Notes Car DVR User Manual Preface Thank you for purchasing this DVR, this device has a unique ultra-portable design; it can be used in various fields, to bring you convenient, safe, colorful daily life. Please

More information

NEO 4.5. User Manual

NEO 4.5. User Manual 1 NEO 4.5 User Manual Table of Contents Safety Information... 3 Appearance and Key Function... 4 Introduction... 5 Call Functions... 6 Contacts... 7 Messaging... 8 Internet Browser... 9 Bluetooth & Wi-Fi...

More information

1080P P2P Wifi Pinhole Hidden Alarm Clock Camera

1080P P2P Wifi Pinhole Hidden Alarm Clock Camera 1080P P2P Wifi Pinhole Hidden Alarm Clock Camera 1 PRODUCT OVERVIEW Features: Real-time Audio & Video Recording Complete Digital Clock Function Wifi IP Network Function IR Night Vision Support Smartphone

More information

App for a Smartphone or Tablet Terminal EXILIM Connect 2.0

App for a Smartphone or Tablet Terminal EXILIM Connect 2.0 App for a Smartphone or Tablet Terminal EXILIM Connect 2.0 User s Guide EN This manual uses a typical CASIO camera and smartphone for explanations. Certain details (display contents, etc.) may differ on

More information

1. Introduction P Package Contents 1.

1. Introduction P Package Contents 1. 1 Contents 1. Introduction ------------------------------------------------------------------------------- P. 3-5 1.1 Package Contents 1.2 Tablet Overview 2. Using the Tablet for the first time ---------------------------------------------------

More information

Please read this manual carefully before you use the unit and save it for future reference.

Please read this manual carefully before you use the unit and save it for future reference. ANDROID STEREO RECEIVER Please read this manual carefully before you use the unit and save it for future reference. Installation Precaution: 1. This unit is designed for using a 12V negative ground system

More information

X1 Augmented Reality SmartGlasses Developer Guide

X1 Augmented Reality SmartGlasses Developer Guide Purchase Now at www.thirdeyegen.com X1 Smart Glasses Spec Sheet Generate the Future X1 Augmented Reality SmartGlasses Developer Guide Index 1. ThirdEye X1 Product and Software Overview 1.1 Android Platform

More information

DVR 528 Digital Video Camera

DVR 528 Digital Video Camera DVR 528 Digital Video Camera User Manual 2010 Sakar International, Inc. All rights reserved. Windows and the Windows logo are registered trademarks of Microsoft Corporation. All other trademarks are the

More information

LIFE PURE User Manual

LIFE PURE User Manual LIFE PURE User Manual 1 Table of Contents Safety Information... 3 Appearance and Key Function... 4 Introduction... 5 Call Functions... 6 Contacts... 7 Messaging... 8 Internet Browser... 9 Bluetooth...

More information

G3 Duo. Table of Contents. User Manual. GitUp Ltd. Getting Started. Camera Overview. Powering Camera On and Off. Touch Display Overview

G3 Duo. Table of Contents. User Manual. GitUp Ltd. Getting Started. Camera Overview. Powering Camera On and Off. Touch Display Overview Table of Contents Getting Started 3 Opening the Case About Camera Case Charging the Battery Action Camera G3 Duo Inserting Removing Memory Cards Camera Overview 5 Status LEDs User Manual Slave Camera Connecting

More information

1. Introduction P Package Contents 1.

1. Introduction P Package Contents 1. 1 Contents 1. Introduction ------------------------------------------------------------------------------- P. 3-5 1.1 Package Contents 1.2 Tablet Overview 2. Using the Tablet for the first time ---------------------------------------------------

More information

TL240C/TL321C Transparent Display User Manual

TL240C/TL321C Transparent Display User Manual TL240C/TL321C Transparent Display User Manual Disclaimer BenQ Corporation makes no representations or warranties, either expressed or implied, with respect to the contents of this document. BenQ Corporation

More information

TALK 5H USER S MANUAL

TALK 5H USER S MANUAL TALK 5H USER S MANUAL 2 INTRODUCTION... 5 GETTING STARTED... 5 Important Safety Precautions... 5 Cleaning the Panel... 6 Cleaning the Phone... 6 Features... 6 Buttons overview... 7 What s int he Box...

More information

DC550 Document camera / Visualiser

DC550 Document camera / Visualiser Document camera / Visualiser Visualise ultra detail for easy learning 1.4kg 8mp camera XGA, UXGA, 720 and 1080 support Full A3 420 x 297 mm (16.5 x 11.7 ) Micro SD Full SD card support for both Images

More information

In-Car DVR KPT-700 User Manual

In-Car DVR KPT-700 User Manual Full HD In-Car DVR KPT-700 User Manual Product Picture & Function 2 a) Device Introduction... 2 b) Button Function... 3 c) LED Light Status List... 5 d) Product Accessories... 5 Basic Operation 5 a) Micro

More information

Video Options. Tap ➀ while not recording to open video options.

Video Options. Tap ➀ while not recording to open video options. Instructions Video Options Tap ➀ while not recording to open video options. ➀ ➁ ➂ ➃ ➅ ➄ ➁ Switch between 16:9 and 4:3 formats. Some devices do not support video formats in 4:3 aspectratio. ➂ Video Resolution

More information

VXi BlueParrott B450-XT User Guide

VXi BlueParrott B450-XT User Guide VXi BlueParrott B450-XT User Guide TABLE OF CONTENTS Safety Information...3 Package Contents...3 Glossary of Terms...4 Headset Overview...5 Charging the Headset...6 Battery Power Indicators Operation While

More information

R E V O L U T I O N U S E R G U I D E

R E V O L U T I O N U S E R G U I D E R E V O L U T I O N USER GUIDE SAFETY & GENERAL INFORMATION Please read the following information before using this product: To avoid hearing damage, make sure that the volume on your transmitting device

More information

HuddleCamHD 3XA with Audio USB 2.0 PTZ Camera w/ built-in Mic Array Installation and Operation Manual

HuddleCamHD 3XA with Audio USB 2.0 PTZ Camera w/ built-in Mic Array Installation and Operation Manual HuddleCamHD 3XA with Audio USB 2.0 PTZ Camera w/ built-in Mic Array Installation and Operation Manual Precautions Safety Tips Please be aware any deviation from these tips may void your warranty Please

More information

TRIPonist Car Mirror N2P900. Smart Vehicle Surveillance & Security System. User manual Version 3.0

TRIPonist Car Mirror N2P900. Smart Vehicle Surveillance & Security System. User manual Version 3.0 TRIPonist Car Mirror N2P900 Smart Vehicle Surveillance & Security System User manual Version 3.0 Welcome N2P900 combines world-class performance with a 5-inch display that integrates Live Streaming, GPS

More information

EOS 5D Mark IV (WG) Wi-Fi (Wireless Communication) Function Instruction Manual ENGLISH INSTRUCTION MANUAL

EOS 5D Mark IV (WG) Wi-Fi (Wireless Communication) Function Instruction Manual ENGLISH INSTRUCTION MANUAL EOS 5D Mark IV (WG) Wi-Fi (Wireless Communication) Function Instruction Manual ENGLISH INSTRUCTION MANUAL Introduction What You Can Do Using the Wi-Fi (Wireless Communication) Functions (1) Communicate

More information

705 INSTALLATION MANUAL

705 INSTALLATION MANUAL 705 INSTALLATION MANUAL 2 Table of Contents Features...03 Specifications...04 Quick - Start...05 Remote Control...07 Hardware Installation...10 705 Models Additional Info...14 Owner s Record...15 3 Features

More information

PLDANDHR1056KT. Android Touchscreen Tablet Entertainment Display Bundle

PLDANDHR1056KT. Android Touchscreen Tablet Entertainment Display Bundle PLDANDHR1056KT Android Touchscreen Tablet Entertainment Display Bundle Dual Vehicle Headrest Mount Multimedia Systems with Bluetooth, Wi-Fi & App Download (10.5 -inch) FRONT PANEL MULTIMEDIA PLAYER 1.

More information

SeeSnake HQ User Guide

SeeSnake HQ User Guide SeeSnake HQ User Guide SeeSnake HQ Version 1.53.85.1426 23 May 2010 About SeeSnake HQ 3 Digital Technology 3 Installation and Updates 5 Windows XP 5 Windows Vista 5 Windows 7 5 The Home Window 6 Home Toolbar

More information

Dash 4.0. User Manual

Dash 4.0. User Manual 1 Dash 4.0 User Manual Table of Contents Safety Information... 3 Appearance and Key Function... 4 Introduction... 5 Call Functions... 6 Contacts... 7 Messaging... 8 Internet Browser... 9 Bluetooth... 10

More information

Voice Control SDK. Vuzix M100 Developer SDK. Developer Documentation. Ron DiNapoli Vuzix Corporation Created: July 22, 2015 Last Update: July 22, 2015

Voice Control SDK. Vuzix M100 Developer SDK. Developer Documentation. Ron DiNapoli Vuzix Corporation Created: July 22, 2015 Last Update: July 22, 2015 Voice Control SDK Vuzix M100 Developer SDK Ron DiNapoli Vuzix Corporation Created: July 22, 2015 Last Update: July 22, 2015 Developer Documentation Introduction The Vuzix Voice Control SDK allows you to

More information

2.4GHz Digital Wireless 7 LCD Surveillance Kit

2.4GHz Digital Wireless 7 LCD Surveillance Kit 2.4GHz Digital Wireless 7 LCD Surveillance Kit User Manual QC-3762 Box Contents: 1 x 7 LCD Monitor 1 x Wireless Camera 2 x Mains Power Adaptors 1 x Camera Antenna 1 x Mounting Hardware Product Diagram:

More information

EOS REBEL T6i (W) EOS 750D (W)

EOS REBEL T6i (W) EOS 750D (W) EOS REBEL T6i (W) EOS 750D (W) Wi-Fi/NFC Function Instruction Manual E INSTRUCTION MANUAL Introduction What You Can Do Using the Wireless LAN Functions This camera s wireless LAN functions let you perform

More information

Introduction To Android

Introduction To Android Introduction To Android Mobile Technologies Symbian OS ios BlackBerry OS Windows Android Introduction to Android Android is an operating system for mobile devices such as smart phones and tablet computers.

More information

CAMERA-DC2 Digital Camera Instruction Manual

CAMERA-DC2 Digital Camera Instruction Manual CAMERA-DC2 Digital Camera Instruction Manual 80 Little Falls Road, Fairfield, NJ 07004 800.631.0868 www.hamiltonbuhl.com Read manual carefully before using the product and keep for future reference. 80

More information

Quick Start Guide. Panoramic Camera. 360 Pro

Quick Start Guide. Panoramic Camera. 360 Pro 360 Pro Quick Start Guide Panoramic Camera To assure the product to work in best status please read the guide carefully before operation and keep it well for future use Laptop with Touch - 360 Rotation

More information

Studio 5.5. User Manual

Studio 5.5. User Manual Studio 5.5 User Manual 1 Table of Contents Safety Information... 3 Appearance and Key Function... 4 Introduction... 5 Call Functions... 6 Contacts... 7 Messaging... 8 Internet Browser... 9 Bluetooth...

More information

Magic-E-Board. User Manual

Magic-E-Board. User Manual Magic-E-Board Magic-E-Board Magic-E-Board...2 1) Included Parts and Optional Accessories...4 1.1) Package Checklist...4 1.2) Optional Accessories...4 2) Magic-E-Board Software Installation...5 3) Magic-E-Board

More information

Camera & Imaging. Advanced Settings Capturing Still Images Recording Videos Oekaki Photo Library...

Camera & Imaging. Advanced Settings Capturing Still Images Recording Videos Oekaki Photo Library... Capturing Image, Recording Movie & Editing... -2 Camera... -3 Using Display as Viewfinder... -3 Single Shot... -5 Normal... -6 Sub Camera... -6 Scene... -6 Face Shot... - Smile Shot... - Multi Shot...

More information

1080FHD High Definition Car Video Recorder User manual

1080FHD High Definition Car Video Recorder User manual 1080FHD High Definition Car Video Recorder User manual 1 / 11 Contents 1. POWER KEY------------------------------------------------------------------------- 4 2. OK KEY -----------------------------------------------------------------------------

More information

FAQ for KULT Basic. Connections. Settings. Calls. Apps. Media

FAQ for KULT Basic. Connections. Settings. Calls. Apps. Media FAQ for KULT Basic 1. What do the Icons mean that can be found in notifications bar at the top of my screen? 2. How can I move an item on the home screen? 3. How can I switch between home screens? 4. How

More information

Lenovo Flex User Guide. Read the safety notices and important tips in the included manuals before using your computer.

Lenovo Flex User Guide. Read the safety notices and important tips in the included manuals before using your computer. Lenovo Flex 3-1130 User Guide Read the safety notices and important tips in the included manuals before using your computer. Notes Before using the product, be sure to read Lenovo Safety and General Information

More information

Enterprise Series. Interactive Digital Board MODEL: GIL S-DB65 GIL S-DB65

Enterprise Series. Interactive Digital Board MODEL: GIL S-DB65 GIL S-DB65 Enterprise Series Interactive Digital Board MODEL: GIL S-DB65 GIL S-DB65 Application Areas Educational Institutes Board Rooms - Meeting Rooms - Training Rooms Conference Rooms - Ops Rooms etc. Interactive

More information

1020 / 1022 INSTALLATION MANUAL

1020 / 1022 INSTALLATION MANUAL 1020 / 1022 INSTALLATION MANUAL 2 Table of Contents Features...03 Specifications...04 Quick - Start...05 Remote Control...07 Hardware Installation...10 1020TSV, 1022TSV, 1020YV, 1022YV, 1020TSH, 1022TSH

More information

615HD Digital Video Camera

615HD Digital Video Camera 615HD Digital Video Camera User Manual 2009-2011 Sakar International, Inc. All rights reserved. Windows and the Windows logo are registered trademarks of Microsoft Corporation. All other trademarks are

More information

700/702 INSTALLATION MANUAL

700/702 INSTALLATION MANUAL 700/702 INSTALLATION MANUAL 2 Table of Contents Features 03 Specifications 04 Quick Start..05 Remote Control.07 Capacitive Touch..10 Hardware Installation 11 700CSH / 702CSH / 700TSH / 702TSH / 700YH /

More information

Introduction to Using the Canon VIXIA HFM31

Introduction to Using the Canon VIXIA HFM31 Introduction to Using the Canon VIXIA HFM31 Video Formats and Approximate Record Times Memory è Recording Mode ê MXP (High- quality) 24 Mbps 1920 x 1080 resolution; 30 fps FXP (High- quality) 17 Mbps 1920

More information

Simpli.Fi. App for wifi DK series cameras OWNER'S MANUAL. APP DSE Simpli.Fi for Wi-Fi DK series cameras. Product description. Download DSE Simpli.

Simpli.Fi. App for wifi DK series cameras OWNER'S MANUAL. APP DSE Simpli.Fi for Wi-Fi DK series cameras. Product description. Download DSE Simpli. Page: 1 Simpli.Fi App for wifi DK series cameras Product description Simpli.Fi is THE app to control all our WIFI hidden cameras to investigate Series DK. Our investigation for cameras are IP cameras to

More information

Contents. Introduction. Getting Started. Navigating your Device. Customizing the Panels. Pure Android Audio. E-Books

Contents. Introduction. Getting Started. Navigating your Device. Customizing the Panels. Pure Android Audio. E-Books Contents Introduction Getting Started Your Device at a Glance Charging Assembling the Power Adapter Turning On/Off, Unlocking Setting to Sleep and Waking Up Inserting and Removing a microsd Card Connecting

More information

Wi-Fi (Wireless Communication) Function Instruction Manual

Wi-Fi (Wireless Communication) Function Instruction Manual Wi-Fi (Wireless Communication) Function Instruction Manual E INSTRUCTION MANUAL Introduction What You Can Do Using the Wi-Fi (Wireless Communication) Functions (1) Communicate with a smartphone (CANON

More information

DVR-100. User Manual

DVR-100. User Manual DVR-100 User Manual 1 Product structure 2 1.Power button 2.OK button 3.Mode 4.Up button 5.Down button 6.Parking monitoring button 7.Lock button 8.Len 9.Night lights 10.USB 11.AV-OUT 12.HDMI OUT 13.Mic

More information

49BDL5055P/11 V User Manual (English)

49BDL5055P/11 V User Manual (English) /11 V1.10 www.philips.com/welcome User Manual (English) Safety Instructions Safety precautions and maintenance shock, electrical hazards and/or mechanical hazards. Read and follow these instructions when

More information

OSMO Release Notes Major Updates. Notes

OSMO Release Notes Major Updates. Notes 2017.08.31 1. Firmware Version: v1.11.2.70 2. DJI GO App ios Version: v3.1.15 3. DJI GO App Android Version: v3.1.11 1. Fixed an issue where videos could not be opened when recorded under multiple light

More information

IP Camera User Manual

IP Camera User Manual the world through my eyes R IP Camera User Manual EN App Store Google Play Version:TWS20180723 1Product description 1.1Product Feature 1.2Package Contents 1.3IP Camera Overview 1.4Operating System Requirement

More information

Contents. I. Safety Instructions II. Parts of Sport Camera III. Technical Parameters...5. IV. Application Description...

Contents. I. Safety Instructions II. Parts of Sport Camera III. Technical Parameters...5. IV. Application Description... Contents I. Safety Instructions... 1 II. Parts of Sport Camera... 3 III. Technical Parameters...5 IV. Application Description...7 V. Detailed Description of All Menus...15 VI. WIFI Function Description...

More information

A+ Suite Software. User Manual

A+ Suite Software. User Manual A+ Suite Software User Manual 2012.03 Table of Contents Introduction... 1 Minimum System Requirements... 1 Using the A+ Plug-in for PowerPoint... 2 Spotlight... 2 Visor... 3 Setting... 3 Floating Toolbox...

More information

Smart Home System Kit

Smart Home System Kit Smart Home System Kit IP SECURITY ALARM SERIES More information, please visit the online CD information on the website http//netcam360.com 0 P a g e BRIEF INSTRUCTION 1. Start Infrared box camera a. Install

More information

1 Key Features Video resolution: Image resolution: 12.4MP LENS: FOV

1 Key Features Video resolution:    Image resolution: 12.4MP LENS: FOV User Manual Model : M360 Full-view Action Camera 1 Key Features Video resolution: 4K@24fps, 2K@30fps, 1080p@96fps, 1080p@60fps, 1080p@30fps, 720p@120fps, 720@60fps. Image resolution: 12.4MP LENS: FOV 360

More information

English SCHUBERTH SC1. User s Guide.

English SCHUBERTH SC1. User s Guide. English SCHUBERTH SC1 www.schuberth.com User s Guide CONTENTS 1 INTRODUCTION... 4 2 PACKAGE CONTENTS...5 3 INSTALLING THE SC1 ON YOUR HELMET...6 3.1 Installing the SC1...7 3.2 Taking out the SC1...7 4

More information

StarryBay. User Guide

StarryBay. User Guide StarryBay User Guide SW-08 Smart Watch 1 / 13 Contents 3 Chapter 1: Overview 3 External part & Internal part 3 Accessories 3 On screen keyboard 4 Basic gestures 5 Status icons 6 Three working modes 7 Chapter

More information

TE-DVR-MM User Manual

TE-DVR-MM User Manual TE-DVR-MM User Manual 1. Components Front Back Remote Control Wiring Connections: Yellow - Battery + Red - Accessory + Black - Ground 2. ibeam Brackets (Sold Separetly) 3. Operation AV1 = Video 1 input

More information

Navi 900 IntelliLink, Touch R700 IntelliLink Frequently Asked Questions

Navi 900 IntelliLink, Touch R700 IntelliLink Frequently Asked Questions Index 1. Audio... 1 2. Navigation (only Navi 900 IntelliLink)... 2 3. Phone... 3 4. Apple CarPlay... 4 5. Android Auto... 6 6. Speech recognition... 8 7. Color instrument panel... 9 8. Favourites... 9

More information

1. Introduction. 1.1 Cosmo Specifications

1. Introduction. 1.1 Cosmo Specifications 1. Introduction 1.1 Cosmo Specifications Details CPU Memory Storage Operating System Connectivity Sensor Camera Display Video Formats Description Quad Core 1.3 GHz ARM Cortex A7 Processor 512MB RAM 8 GB

More information

User Manual. Wireless IP Camera

User Manual. Wireless IP Camera User Manual Wireless IP Camera Introduction Hi. Thank you for purchasing the AUKEY VT-CM1 Wireless Security IP Camera. Please read this user manual carefully and keep it in a safe place for future reference.

More information

XCL-SG Series. XCL-CG Series. Digital Camera Module Equipped with the Global Shutter CMOS Sensor

XCL-SG Series. XCL-CG Series. Digital Camera Module Equipped with the Global Shutter CMOS Sensor Digital Camera Module Equipped with the Global Shutter CMOS Sensor XCL-SG Series XCL-CG Series (B/W) C (Colour) 1.1-type 12.4 MP 20 fps Camera Link Key Features Camera Link Base Configuration (1/2/3 tap

More information

Everything in your eyes. ismartviewpro. (For Android) User Manual VER 5.2

Everything in your eyes. ismartviewpro. (For Android) User Manual VER 5.2 IP Cloud Network Camera Everything in your eyes ismartviewpro (For Android) User Manual 2017-08 VER 5.2 1. ismartviewpro Summary ismartviewpro for android is our company developed application software

More information

User Manual PHD-1080W

User Manual PHD-1080W User Manual PHD-1080W Overview Getting Started Before Use: Fully charge the camera using the included USB cable and charger for 3-4 hours. The blue and red indicators will turn on when the camera is charging.

More information

Cyclops Gear CGX2 User Manual

Cyclops Gear CGX2 User Manual CYCLOPS GEAR CGX2 4K WI-FI ACTION CAMERA Cyclops Gear CGX2 User Manual CONTENTS Quick Notes CGX2 Special Features Product Accessories CGX2 Interface Button function CGX2 Operation Power on/off Battery

More information

How To Manually Turn Off Display Windows 7

How To Manually Turn Off Display Windows 7 How To Manually Turn Off Display Windows 7 Laptop Microphone Playback Manually mute the microphone in the Sound Recording window. After you turn off the dock and turn on the dock again, the volume changes

More information

PRO-SERIES HD On-Screen Display

PRO-SERIES HD On-Screen Display PRO-SERIES HD On-Screen Display INSTRUCTION MANUAL Accessing the On-Screen Display (OSD) The hyphen indicates the option or setting selected. Use the up and down arrows to navigate. SYSTEM DOME INFO ID

More information

IN-CAR HD Digital Video Recorder

IN-CAR HD Digital Video Recorder IN-CAR HD Digital Video Recorder USER MANUAL KPT-200 In order to ensure better use of each function of your Kapture In-Car HD DVR, it is recommended that you read these product instructions carefully before

More information

32 PCAP Touch Screen with Dual OS

32 PCAP Touch Screen with Dual OS 32 PCAP Touch Screen with Dual OS Overview Audio The screen has two integrated speakers but also has an audio out port for connecting headphones or external speakers. 10-Point PCAP Touch Technology Using

More information

DVR 710HDv2 Digital Video Recorder

DVR 710HDv2 Digital Video Recorder DVR 710HDv2 Digital Video Recorder User Manual 2009-2011 Sakar International, Inc. All rights reserved. Windows and the Windows logo are registered trademarks of Microsoft Corporation. All other trademarks

More information

PD_BlackBerry_Folder_210x210mm_GB_4c_RZ_v4.indd :36

PD_BlackBerry_Folder_210x210mm_GB_4c_RZ_v4.indd :36 PD_BlackBerry_Folder_210x210mm_GB_4c_RZ_v4.indd 1 18.12.13 09:36 PD_BlackBerry_Folder_210x210mm_GB_4c_RZ_v4.indd 2 18.12.13 09:36 INTELLIGENCE MEETS SPEED THE P 9982 SMARTPHONE BY BLACKBERRY Porsche Design

More information

Korean No. 1 Blackbox. 2CH Full HD VDR with USB backup function. Product specifications ITB-5000FHD

Korean No. 1 Blackbox. 2CH Full HD VDR with USB backup function. Product specifications ITB-5000FHD Korean No. 1 Blackbox 2CH Full HD VDR with USB backup function Product specifications ITB-5000FHD Vehicle Driving Recorder 1 1. Technical specifications Item specifications remarks Camera Front 3M CMOS

More information

User manual MODEL: STB266. For ongoing product improvement, this manual will be modified without prior notice.

User manual MODEL: STB266. For ongoing product improvement, this manual will be modified without prior notice. User manual In order to ease users to select video programs, other logos and/or trademarks may appear on the Cloud TV Box. All other logos and/or trademarks are the property of their respective owners.

More information

Jabra MOTION OFFICE. User Manual. jabra.com/motionoffice

Jabra MOTION OFFICE. User Manual. jabra.com/motionoffice Jabra MOTION OFFICE User Manual jabra.com/motionoffice 1. WELCOME... 4 2. PRODUCT OVERVIEW... 6 2.1 TOUCHSCREEN BASE 2.2 HEADSET 2.3 BLUETOOTH ADAPTER (JABRA LINK 360 TM ) 2.4 OPTIONAL ACCESSORIES 3. HOW

More information

Wireless PTZ Cloud Camera TV-IP851WC (v1.0r)

Wireless PTZ Cloud Camera TV-IP851WC (v1.0r) (v1.0r) TRENDnet s Wireless PTZ Cloud Camera, model, takes the work out of viewing video over the internet. Previously to view video remotely, users needed to perform many complicated and time consuming

More information

Collaborate App for Android Smartphones

Collaborate App for Android Smartphones Collaborate App for Android Smartphones The AT&T Collaborate service provides the Collaborate app to help you manage calls and conferences on the go. The app comes in 3 versions: Collaborate - Mobile Collaborate

More information

TL240C Transparent Display User Manual

TL240C Transparent Display User Manual TL240C Transparent Display User Manual Disclaimer BenQ Corporation makes no representations or warranties, either expressed or implied, with respect to the contents of this document. BenQ Corporation reserves

More information

X1 Augmented Reality SmartGlasses Developer Guide

X1 Augmented Reality SmartGlasses Developer Guide Purchase Now at www.thirdeyegen.com X1 Smart Glasses Spec Sheet Generate the Future X1 Augmented Reality SmartGlasses Developer Guide Index 1. ThirdEye X1 Product and Software Overview 1.1 Android Platform

More information

Getting Started. Using Camera. Select Camera. Detect Personal & Pet. Continuous AF. Album 7-1. Shoot photos or videos.

Getting Started. Using Camera. Select Camera. Detect Personal & Pet. Continuous AF. Album 7-1. Shoot photos or videos. Camera Getting Started Shoot photos or videos. Detect Personal & Pet Locks focus on the face of a person or pet. Register people's faces; related information appears in Viewfinder upon face detection.

More information

STANMORE II VOICE WITH AMAZON ALEXA USER MANUAL

STANMORE II VOICE WITH AMAZON ALEXA USER MANUAL STANMORE II VOICE WITH AMAZON ALEXA USER MANUAL LEGAL & TRADEMARK NOTICE Design of device and packaging are intellectual properties of Zound Industries International AB and Marshall Amplification Plc.

More information

TECHNOLOGIES. P2jr Pico Projector. User Guide

TECHNOLOGIES. P2jr Pico Projector. User Guide aaxa TECHNOLOGIES P2jr Pico Projector User Guide Caution! WARNING: Please use this product as instructed. Misuse may cause injury or death. DO NOT use while driving DO NOT expose to water or wet surfaces.

More information

1. Notes. 2. Accessories. 3. Main Functions

1. Notes. 2. Accessories. 3. Main Functions Contents 1. Notes... 2 2. Accessories... 2 3. Main Functions... 2 4. Appearance And Buttons... 3 5. MID Hardware Parameters... 4 6. MID Use And Preparation... 4 7. Keys Functions... 4 8. Start-up And Shutdown...

More information

DASH 4.5 user manual 1

DASH 4.5 user manual 1 DASH 4.5 user manual 1 Table of Contents Safety Information... 3 Appearance and Key Function... 4 Introduction... 4 Call Functions... 6 Contacts... 6 Messaging... 8 Internet Browser... 9 Bluetooth... 10

More information

DC450 Document Camera / Visualiser

DC450 Document Camera / Visualiser www.optoma.com Document Camera / Visualiser The new document camera is capable of delivering incredible high image quality with its 8MP camera, direct HDMI output up to 30fps, full A3 shooting area, and

More information

VPL-EW255. 3,200 lumens WXGA portable projector with wireless connectivity. Overview

VPL-EW255. 3,200 lumens WXGA portable projector with wireless connectivity. Overview VPL-EW255 3,200 lumens WXGA portable projector with wireless connectivity Overview Bring learning to life with this bright, energy-efficient, wireless-ready portable projector that has been designed in

More information

DVR 514 Digital Video Recorder

DVR 514 Digital Video Recorder DVR 514 Digital Video Recorder User Manual 2010 Sakar International, Inc. All rights reserved. Windows and the Windows logo are registered trademarks of Microsoft Corporation. All other trademarks are

More information

Honor 3C (H30-U10) Mobile Phone V100R001. Product Description. Issue 01. Date HUAWEI TECHNOLOGIES CO., LTD.

Honor 3C (H30-U10) Mobile Phone V100R001. Product Description. Issue 01. Date HUAWEI TECHNOLOGIES CO., LTD. V100R001 Issue 01 Date 2014-03-12 HUAWEI TECHNOLOGIES CO., LTD. . 2014. All rights reserved. No part of this document may be reproduced or transmitted in any form or by any means without prior written

More information