From 6dfa25aa3f1c555fa3bd04b8452712d64dd71918 Mon Sep 17 00:00:00 2001 From: Paul McLean Date: Tue, 19 Dec 2017 12:14:36 -0600 Subject: Using new usbhost function usb_device_get_string_ucs2() to get USB descriptor strings. Bug: 70163357 Test: Manual - Connect NuForce (micro) DAC. Examine device name descriptor string. Note also that it doesn't reboot the device on connection. Verify that audio plays correctly. Change-Id: I4b607c51a951cf503fde0b485793dfc9e593f932 --- .../jni/com_android_server_UsbDescriptorParser.cpp | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/services/core/jni/com_android_server_UsbDescriptorParser.cpp b/services/core/jni/com_android_server_UsbDescriptorParser.cpp index 35e65bc3110f..79f482c6df7f 100644 --- a/services/core/jni/com_android_server_UsbDescriptorParser.cpp +++ b/services/core/jni/com_android_server_UsbDescriptorParser.cpp @@ -81,16 +81,20 @@ jstring JNICALL Java_com_android_server_usb_descriptors_UsbDescriptorParser_getD return NULL; } - char* c_str = usb_device_get_string(device, stringId, 0 /*timeout*/); - - jstring j_str = env->NewStringUTF(c_str); - - free(c_str); - usb_device_close(device); - + // Get Raw UCS2 Bytes + jbyte* byteBuffer = NULL; + size_t numUSC2Bytes = 0; + int retVal = + usb_device_get_string_ucs2(device, stringId, 0 /*timeout*/, + (void**)&byteBuffer, &numUSC2Bytes); + + jstring j_str = NULL; + + if (retVal == 0) { + j_str = env->NewString((jchar*)byteBuffer, numUSC2Bytes/2); + free(byteBuffer); + } return j_str; } } // extern "C" - - -- cgit v1.2.3-59-g8ed1b