hi all, I occurred the familiar issue with that. I want to open the /dev/snd/hwC0D0 to do the I/O control. But the different thing is that I failed at opening the device node.
Dear Mars, Did you find the same situation while opening the device node? Since I wrote this code into Android ALSA part. (See also /hardware/ alsa-sound/) Did you confirm that you've already been success on "open"? Thanks for your information. BR, Tec On 3月10日, 下午4時48分, Mars Alucard <k...@cis.nctu.edu.tw> wrote: > Hi, > > In my Android application, I need to use IOCTL() to do I2C R/W > operations. > > My native C application could do it successfully, no matter by > standalone or dynamically linking .so, but... > ioctl() returns -1 when Android application loads shared library (.so) > and calls the function including ioctl() via JNI. > > Could Android application directly use ioctl() in shared library (.so) > thruogh JNI with any tips? > > Or, if Android application needs to use ioctl() in native C code, > could some methods help to do this? > (Like Service Manager, Binder, Android source code, or something > else?) > > I've tried to find articles for several days to solve this issue, but > still get no ideas now. > > (Followings are the environment and testing steps for my trials.) > > 1. Testing Steps for Native C Application on Android (Successful) > (1) Chiefly I want to execute the two statements below on Android: > > unsigned int hI2C = open("/dev/i2c-2", O_RDWR); > int retI2C = ioctl(hI2C, I2C_SLAVE, 0x0C); > > (2) A native C application is compiled on Ubuntu, and then put to > Beagle/G1. > (3) The native C application could work well to open I2C and bind/read/ > write I2C slave address 0x0C. > (4) > Even more, the native C application could dynamically link the shared > library (.so) in 2. (1) below, > and then call JNI function to execute the statements in 1. (1) above > successfully. > > 2. Testing Steps for Android Application with JNI + Shared Library .so > (Unsuccessful) > (1) I make a shared library (.so) with JNI, including the statements > in 1. (1) above, by the commands below: > > ~/arm-2007q3/bin/arm-none-linux-gnueabi-gcc -I/usr/lib/jvm/java-6-sun/ > include -I/usr/lib/jvm/java-6-sun/include/linux -fpic -c XXX.c > ~/arm-2007q3/bin/arm-none-linux-gnueabi-ld -T ~/arm-2007q3/arm-none- > linux-gnueabi/lib/ldscripts/armelf_linux_eabi.xsc -shared -o libXXX.so > XXX.o > > (2) An Android application is compiled by Eclipse on WIN32, with a few > system-level permission. (enabled by "uses-permission") > (3) Then put the Android application (.apk) and shared library (.so) > to Beagle/G1, with chmod 777. > (4) Run the Android application, to load the shared library and call > JNI function to execute the statements in 1. (1) above. > (5) The Android application could load the shared library, call JNI > functions, and execute almost all statements well, BUT... > (6) When the Android application call JNI function to execute ioctl(), > ioctl() return -1, which means FAILED. > > 3. Environment > (1) Platform: Android @ T1 OMAP Beagle Board & Google Phone > (2) WIN32: JDK v1.60_12 & Eclipse v3.42 (with a few system-level > permissions enabled by "uses-permission") > (3) Linux: Ubuntu & JDK v1.60_10 & arm-2007q3 ( with arm-non-linux- > gnueabi-gcc/ld) > > Many thanks, > > Mars Alucard --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---