# Developing an Android App for Snapdragon Mobile Platforms

Source: [https://docs.qualcomm.com/doc/80-63442-4/topic/developing-an-android-app-for-snapdragon-mobile-platforms.html](https://docs.qualcomm.com/doc/80-63442-4/topic/developing-an-android-app-for-snapdragon-mobile-platforms.html)

Using a hardware development kit and external camera for object detection and
        location

The Qualcomm® Neural Processing Engine (NPE) is a runtime for the execution of deep
            neural networks. The engine is accelerated through its tight integration with a
            Snapdragon® mobile platform.

The following project covers a sample AI/ML Android application designed to capture
            objects through an external camera and use a machine learning model to predict the
            location of the objects. The project applies to any device — smartphone, [mobile hardware development kit](https://www.qualcomm.com/developer/hardware), third-party development kit, etc. — powered
            by a [Snapdragon processor that supports the Qualcomm
                NPE](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/overview.html). As an example, the walk-through below is based on the [Snapdragon 835 Mobile Hardware Development Kit](https://www.qualcomm.com/developer/hardware).

**Project prerequisites**

1. Mobile display
2. Snapdragon 835 Mobile HDK development board
3. USB Type C cable
4. External camera setup
5. Power cable

## Hardware setup

Set up the hardware as shown in the image:  
![](data:image/png;base64,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/KbD8asW/Re1zB/JSE0EWKMCrxIfpqtYQXNE9fJ+J+DheSg6b719rXcZankj9xWh1zC70JZLzYxH/3lH6cSl8txjNYzEuwu+9Zf+9p/PRHArLaEiyEbioT/BJ0qpHltCC10VwMQXL53It5hc+W0nB/EptVWEihKhj+MHwQXlgKboJHCXsQabiUJSS+BX5tZ7jBzwpSX0eEXyYvN+GXV1ynpLqKh8iw/feboiCWO8f9aaRN93Zfk/IUGpZ1IdnezBZUR+Q80sfUDQ4PAfInHYaJ5ul4TfhGJ4RlJ0Df69QQRKD4cg5F2bnDTjH8y5ar0ew6bsqeF1uj6JFjO/8/Nf6cCLNnDC57fmSIun/6eRhEqmkp/nrutpNKBDGobggOzimbBOwPRMLZMqYOtuV55WnwR7hF4dpY/kn13pk7dwTN7ozKHM32y3fFqdA9K3fXJjedy7X2gaxlL1BLGC7n4GjbEVtHRXAUKRbMy0ploXTa81Oro3tSIE5lefsdEnONpVl4jyOfrTppez42qww/8EH/YB0s/F9lb5Nv3YXyG+LTV10hYk15zhYZ0hYiuzbbJJwyPtapw+M3YARy8h+jtyFHa+GZAN1eymGyGB4J4tkzHgFl3oCJdZef6tzDJTZj26j/AHUqklQkq3f6+O+r2GE0pojnPfx0IygHmrdNwOIoNaJFlc2G/Ot24TjMQYTm+FYjQjRFW5KLjh9Ft/xzu9Lj/7Mj4sTozjI4ws7uCp0rO5f0XFSFgfv+VpbfIun88oXjen/7W3LRM/S6CdbdoMOScHXRdAvZ9+T/Wdjgfiyrb/G523I5l8/4LMlvbg93SGfz2rQIZyhogqDGjwJAGpRnfSd3XF1qUffhp5uRCOHupTtLw0JSEnCEFHhmFinmHjhsR0pbfFKD3WhMnkQCOaZ47UcWuEl1IX/zmwTAAAWE1QIIcBAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjU2ODwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj40ODA8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KAA==)

## Software setup

To install the Android application on the development board, switch on the power to
                the board. Next, connect the board to your development machine with the USB Type C
                cable. Then, enable USB debugging in the Developer options on the board as
                follows:

1. Open the Settings app through the display.
2. Select “About phone” in the list.
3. Scroll down and tap “Build number” seven times.
4. Press the back arrow and find “Developer options” in the list.
5. Open Developer options, and then scroll down to find and enable USB
                    debugging.

The board should now be connected to the development machine.

## Running the application

The application opens a camera preview, collects all the frames and converts them to
                a bitmap. [Neural Network Builder](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-2/android_tutorial.html) constructs the
                network by passing the model file in .dlc format as the input. The model receives
                the bitmap, and in the inference step the app predicts the location of the
                object.

The full project for this application is available in its GitHub repository.

##  Loading the model

Following is the code snippet for connecting to the neural network and loading the
                model:

    final SNPE.NeuralNetworkBuilder netBuilder = new
          SNPE.NeuralNetworkBuilder(mApplicationContext) // Allows selecting a runtime order for the
          network. // In the example below use DSP and fall back, in order, to GPU then CPU // depending
          on whether any of the runtimes are available. .setRuntimeOrder(DSP, GPU, CPU) // Loads a model
          from DLC file .setModel(new File("")) // Build the network network =
            builder.build();Copy to clipboard

##  Getting the bitmap from TextureView

A bitmap of fixed height and width can be obtained from TextureView in an
                onCaptureCompleted callback using TotalCaptureResult. That bitmap can be compressed
                and sent to the model as input, as shown in this code snippet:

    @Override public void onCaptureCompleted(@NonNull CameraCaptureSession session, @NonNull
          CaptureRequest request, @NonNull TotalCaptureResult result) {
          super.onCaptureCompleted(session, request, result); if (mNetworkLoaded) { Bitmap mBitmap =
          mTextureView.getBitmap(BITMAP_WIDTH, BITMAP_HEIGHT);Copy to clipboard

##  Performing inference in the object

In the code snippet below, the app converts the bitmap image to an RGBA byte array of
                size 300x300x3. Basic image processing depends on the kind of input shape required
                by the model.

Now the processed image must be converted into a tensor. The prediction API requires
                a tensor format of type Float, which returns object prediction and localization in
                the Map &lt;String, FloatTensor&gt; object.

    private Map inferenceOnBitmap(Bitmap inputBitmap) { final Map outputs; try { if (mNeuralNetwork == null || mInputTensorReused == null || inputBitmap.getWidth() != getInputTensorWidth() || inputBitmap.getHeight() != getInputTensorHeight()) { return null; } // [0.3ms] Bitmap to RGBA byte array (size: 300*300*3 (RGBA..)) mBitmapToFloatHelper.bitmapToBuffer(inputBitmap); // [2ms] Pre-processing: Bitmap (300,300,4 ints) -> Float Input Tensor (300,300,3 floats) mTimeStat.startInterval(); final float[] inputFloatsHW3 = mBitmapToFloatHelper.bufferToNormalFloatsBGR(); if (mBitmapToFloatHelper.isFloatBufferBlack()) return null; mInputTensorReused.write(inputFloatsHW3, 0, inputFloatsHW3.length, 0, 0); mTimeStat.stopInterval("i_tensor", 20, false); // [31ms on GPU16, 50ms on GPU] execute the inference mTimeStat.startInterval(); outputs = mNeuralNetwork.execute(mInputTensorsMap); mTimeStat.stopInterval("nn_exec ", 20, false); } catch (Exception e) { e.printStackTrace(); return null; } return outputs; }Copy to clipboard

##  Localizing the object

The model returns the respective Float tensors, from which the shape of the object
                and its name can be inferred. The app uses Canvas to draw a rectangle on the
                predicted object, as shown in this code snippet:

    private void computeFinalGeometry(Box box, Canvas canvas) { final int viewWidth = getWidth();
          final int viewHeight = getHeight(); float y = viewHeight * box.left; float x = viewWidth *
          box.top; float y1 = viewHeight * box.right; float x1 = viewWidth * box.bottom; // draw the
          text String textLabel = (box.type_name != null && !box.type_name.isEmpty()) ? box.type_name :
          String.valueOf(box.type_id + 2); canvas.drawText(textLabel, x + 10, y + 30, mTextPaint); //
          draw the box mOutlinePaint.setColor(colorForIndex(box.type_id)); canvas.drawRect(x, y, x1, y1,
          mOutlinePaint); }Copy to clipboard

**Parent Topic:** [Developing Apps with the Qualcomm Neural Processing SDK for AI](https://docs.qualcomm.com/doc/80-63442-4/topic/developing-apps-qualcomm-neural-processing-sdk.html)

Last Published: Jun 24, 2024

[Previous Topic
Tuning and Optimizing Machine Learning Models](https://docs.qualcomm.com/bundle/publicresource/80-63442-4/topics/tuning-and-optimizing-machine-learning-models.md) [Next Topic
Streaming Live Frames to a Machine Learning Model with the Qualcomm Neural Processing SDK for AI](https://docs.qualcomm.com/bundle/publicresource/80-63442-4/topics/streaming-live-frames-to-a-mlm.md)