编写了一个基于alsa库的声音播放C程序,想在Android SDK上运行。
所以就下载安装了cygwin和Android NDK,想使用NDK编译程序,用adb把程序放到AVD上运行。可是AndroidSDK中好像没有alsa相关支持啊,在NDK上编译这个应用程序也需要libasound.so库。
还是说从一开这个想法就行不通的?NDK是不是只能编译一些使用基本libc,libz的C应用程序啊?如果行不通,Android sdk上有C库可以播放声音吗?本人java基本不会。

解决方案 »

  1.   

    alsa与openAl不是同类型东西。alsa更像是驱动,openal是音效api。楼主想用alsa驱动android上的声音设备估计是没戏了。
      

  2.   

    Android sdk 上有现成的openal吗,还是需要自己移植呢
      

  3.   

    2楼的意思是说,目前Android的SDK上不提供alsa驱动和libasound的库,而且自己也不能通过alsa的源码把alsa部分添加到Android sdk中(或者说难度很大)吗?其实就是想用C写一个可以播放pcm音频的程序,就用AndroidSDK上现成的资源,有什么办法吗?现在刚接触Android平台,很多地方不太了解,知道的给指点一下啊。
      

  4.   


    我也不会java,android的也不会。。
      

  5.   

    不会JAVA,那么你会完全脱离Android框架,也就是直接建立在Linux平台上的开发了。
      

  6.   

    使用AndroidSDK创建的AVD中可用的资源太少了,所以决定不在AVD上测试程序了,直接用板子测试。
      

  7.   

    android底层你是动不到的,而且各家实现也不一定一样。 如果你只是要放音,就用audioFlinger的track功能即可,这块是有接口的。在java层和native层都能用到。
      

  8.   

    恩,我这是telechip的Android平台,其实里面提供了alsa驱动和libasound,而且我在板子上用alsa播声音也没问题的。只是人多设备少,就来想用ndk编译+AVD运行,来测试程序的。结果发现AVD上没有alsa驱动和libasound,安装了cygwin和ndk,用ndk编译alsa的应用程序,也没有libasound库,最后只好放弃,再去找别人把开发板抢回来用。
      

  9.   


    进行NDK编程一定要用CYWIN吗?
      

  10.   

    在linux环境里直接就可以用了,cygwin只是为了模拟一个linux的环境
      

  11.   

    android上是有ALSA接口的,不过不对外开放,Android在ALSA基础上再次封装为AudioFlinger作为系统底层与上层应用的接口,不管底层系统根据硬件如何变,AudioFlinger接口不会变。另外google将放出ADK提供硬件开发者,进行硬件控制