Skip to content

Latest commit

 

History

History
184 lines (143 loc) · 7.81 KB

android-sc98xx-board-java.md

File metadata and controls

184 lines (143 loc) · 7.81 KB
platform device language
android
spreadtrum sc98xx device
java

Run a simple JAVA sample on Spreadtrum SC98xx device running Android marshmallow (v6.0.1)


Table of Contents

Introduction

About this document

This document describes how to connect Spreadtrum SC98xx dev-board with Azure IoT SDK. This multi-step process includes:

  • Configuring Azure IoT Hub
  • Registering your IoT device
  • Build and deploy Azure IoT SDK on device

Step 1: Prerequisites

You should have the following items ready before beginning the process:

Step 2: Prepare your Device

  • Make sure desktop is ready as per instructions given in Prepare your development environment.

  • Enable USB debugging on your device. On Android 4.0 and newer, go to Settings > Developer options. Note: On Android 4.2 and newer, Developer options is hidden by default. To make it available, go to Settings > About phone and tap Build number seven times. Return to the previous screen to find Developer options.

  • Plug in your device to your development machine with a USB cable. If you're developing on Windows, you might need to install the appropriate USB driver for your device. For help installing drivers, see the OEM USB Drivers document.

  • Connect the device to internet.

    • On host PC, run adb shell and execute following commands:
        ./adb devices
        ./ adb shell
        ps | grep avatar
    
    • Turn on Wifi and configure to connect to internet (commands to configure wifi to connect to internet automatcailly...)

Step 3: Build and Run the sample

Please find Azure Android java device sample code here.

## 3.1 Modify the Samples for screenless device

The sample application will require user interaction to click a button on screen to receive messages from IoT hub. If the target device is a screenless device, you may modify the sample code to have the app to receive message right after sending messages without user interactions.

Following is the example of modification:

In MainActivity.java:

public class MainActivity extends AppCompatActivity {

    String connString = "[device connection string]";
    //IotHubClientProtocol curTestProtocol = IotHubClientProtocol.HTTPS;
    //IotHubClientProtocol curTestProtocol = IotHubClientProtocol.MQTT;

    // setup a variable to switch the usage of Azure connection protocol globally.
    IotHubClientProtocol curTestProtocol = IotHubClientProtocol.HTTPS;

    . . .
    public void SendMessage() throws URISyntaxException, IOException {
        . . .
        // Comment/uncomment from lines below to use HTTPS or MQTT protocol
        //IotHubClientProtocol protocol = IotHubClientProtocol.HTTPS;
        //IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;
        IotHubClientProtocol protocol = curTestProtocol;
        . . .
    }
    . . .
    public void btnReceiveOnClick(View v) throws URISyntaxException, IOException {
      . . .
      // Comment/uncomment from lines below to use HTTPS or MQTT protocol
      //IotHubClientProtocol protocol = IotHubClientProtocol.HTTPS;
      //IotHubClientProtocol protocol = IotHubClientProtocol.MQTT;
      IotHubClientProtocol protocol = curTestProtocol;
      . . .
    }
    . . .
}
protected void onCreate(Bundle savedInstanceState) {
    . . .
    try {
        SendMessage();
        btnReceiveOnClick(null); // call button click event handler
    }
    . . .
}
public void btnReceiveOnClick(View v) throws URISyntaxException, IOException {
    . . .
    try {
        // Thread.sleep(2000);
        int maxMsgCount = 1; // exit the while loop when this number of messages is received.
        long maxTimeout = 10000; // in milliseconds
        long elapsedTime = 0;
        System.out.println("Start to receive messages from IoTHub...");
        while (maxMsgCount > counter.get()) {
            Thread.sleep(500);
            elapsedTime += 500;
            if (elapsedTime >= maxTimeout) {
                System.out.println("Timeout!");
                break;
            }
        }
        System.out.println("Stop receiving messages from IoTHub!");
    }
    . . .
}
## 3.2 Build the Sample
  1. Start a new instance of Android Studio and open Android project from here:

    azure-iot-sdks/java/device/samples/android-sample/
    
  2. Go to MainActivity.java, replace the [device connection string] placeholder with connection string of the device you have created in Provision your device and get its credentials and save the file. An example of IoT Hub Connection String is as below: HostName=[YourIoTHubName];SharedAccessKeyName=[YourAccessKeyName];SharedAccessKey=[YourAccessKey]

  3. Build your project by going to Build menu > Make Project.

## 3.3 Run and Validate the Samples

In this section you will run the Azure IoT client SDK samples to validate communication between your device and Azure IoT Hub. You will send messages to the Azure IoT Hub service and validate that IoT Hub has successfully receive the data. You will also monitor any messages sent from the Azure IoT Hub to client.

### 3.3.1 Run the Sample:
  • Select one of your project's files and click Run from the toolbar.
  • In the Choose Device window that appears, select the Choose a running device radio button, select your device, and click OK.
  • Android Studio will install the app on your connected device and starts it.
### 3.3.2 Send Device Events to IoT Hub:
  • See Manage IoT Hub to learn how to observe the messages IoT Hub receives from the application.
  • As soon as you run the app on your device (or emulator), it will start sending messages to IoTHub.
  • Check the Android Monitor window in Android Studio. Verify that the confirmation messages show an OK. If not, then you may have incorrectly copied the device hub connection information.
### 3.3.3 Receive messages from IoT Hub
  • See Manage IoT Hub to learn how to send cloud-to-device messages to the application.
  • Click the Receive Messages button from the sample App UI loaded on your device or in the emulator. If you modify the application code to receive message right after sending message, you could skip this step.
  • Check the Android Monitor window in Android Studio. You should be able to see the command received.