UAC音频设备测试

1,使用BuildLibUSB项目编译libusb为so文件

2,在Android Studio 4.1.1中,新建一个项目,选择empty activity

3,在app目录中,新建jniLibs\libusb-1.0\lib目录,拷贝第1步生成的so文件到jniLibs\libusb-1.0\lib目录,分cpu类型存放

4,在jniLibs\libusb-1.0目录中,新建include目录,从uildLibUSB项目中找到libusb.h并拷贝过来 5,在jniLibs\libusb-1.0目录中,新建Android.mk文件,内容为:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := libusb-1.0

LOCAL_SRC_FILES := lib/$(TARGET_ARCH_ABI)/libusb-1.0.so

LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/include/libusb-1.0

LOCAL_EXPORT_LDLIBS := -llog

include $(PREBUILT_SHARED_LIBRARY)

6,在BuildLibUSB项目中找到freedv.zip,解压到app\jniLibs目录中

7,新建java文件,内容为:

public class UsbAudio {

static {

System.loadLibrary("usbaudio");

}

public native boolean setup();

public native void close();

public native void loop();

public native boolean stop();

public native int measure();

}

8,修改调用so文件的c语言文件,替换com_luoxi_uac,com.luoxi.uac,com/luoxi/uac等包含包名的字符串为自己的

9,新增MainActivity,并修改AndroidManifest.xml文件中的activity标签为:

android:name="com.luoxi.uacdemo.MainActivity"

android:label="@string/app_name">

10,修改app的build.gradle文件,在android域里面新增NDK相关设置

ndkPath "E:\\android-ndk-r21b"

sourceSets {

main {

jniLibs.srcDirs = ["jniLibs"]

}

}

externalNativeBuild {

ndkBuild {

path "jniLibs/Android.mk"

}

}

11,拷贝usbhelper到java目录下,usbhelper可以从BuildLibUSB项目根目录中找到

12,修改MainActivity的OnCreate方法,增加初始化代码,类似于:

mUsbManager = (UsbManager) getSystemService(Context.USB_SERVICE);

HashMap deviceList = mUsbManager.getDeviceList();

Iterator deviceIterator = deviceList.values().iterator();

while(deviceIterator.hasNext()){

UsbDevice device = deviceIterator.next();

UsbInterface intf = device.getInterface(0);

if (intf.getInterfaceClass() == UsbConstants.USB_CLASS_AUDIO) {

mAudioDevice = device;

}

}

System.loadLibrary("usb-1.0");

UsbHelper.useContext(getApplicationContext());

mUsbAudio = new UsbAudio();

AudioPlayback.setup();

13,在相应位置(例如在mainActivity的按钮事件侦听方法中)增加声音捕获代码,例如:

try{

if (mUsbAudio.setup() == true) {

}

}catch (Exception e){

e.printStackTrace();

}

new Thread(new Runnable() {

public void run() {

while (true) {

try {

mUsbAudio.loop();

}catch (Exception e){

e.printStackTrace();

}

}

}

}).start();

14,在相应位置增加声音捕获停止代码,例如:

mUsbAudio.stop();

mUsbAudio.close();

15,在相应位置增加Android操作系统的权限申请代码,例如:

mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);

IntentFilter filter = new IntentFilter(ACTION_USB_PERMISSION);

mUsbPermissionReciever = new UsbReciever();

registerReceiver(mUsbPermissionReciever, filter);

if (mAudioDevice != null && mPermissionIntent != null) {

mUsbManager.requestPermission(mAudioDevice, mPermissionIntent);

}

16,在相应位置增加注销代码,例如:

unregisterReceiver(mUsbPermissionReciever);

if (mUsbAudio != null) {

mUsbAudio.stop();

mUsbAudio.close();

}

17,在相应位置增加USB设备变动广播侦听器,例如:

private class UsbReciever extends BroadcastReceiver {

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

if (ACTION_USB_PERMISSION.equals(action)) {

if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false)) {

setDevice(device);

}

}

}

}

18,处理其他问题,后编译运行

源代码:https://gitee.com/radarfyh/multimedia-system/tree/master/TestUAC1

python androidhelper 播放 音频_基于外置UAC音频设备做的一款录音Android Demo相关推荐

  1. python 循环播放音乐_基于python实现音乐播放器代码实例

    核心播放模块(pygame内核) import time import pygame import easygui as gui file = r'D:\CloudMusic\G.E.M.邓紫棋,艾热 ...

  2. python 时间函数 毫秒_利用python进行播放音频与录音,骚操作!

    现如今,我们的学习知识的渠道越来越多,我们也要充分利用自己的感官去汲取知识.当我们看书累的时候,我们完全可以听过听书来学习,这样的平台也很多,pk 哥之前也写过关于下载喜马拉雅音频爬虫的方法:Pyth ...

  3. 怎么让python播放音频_用Python播放音频

    用Python播放音频 如何从Python脚本播放音频(它可能就像1秒声音)? 如果它与平台无关,那将是最好的,但首先它需要在Mac上运行. 我知道我可以在Python中执行afplay file.m ...

  4. python实时播放音频和录音_python实现播放音频和录音功能示例代码

    python实现播放音频和录音功能示例代码 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  python实现播放音频和录音功能示例代码.txt ] (友情提示:右 ...

  5. 这是基于HTML+CSS+JQ做的一款炫酷的旋转时钟网页代码

    这是基于HTML+CSS+JQ做的一款炫酷的旋转时钟代码,非常好看,里面充分的利用了对jq+css的使用,希望对于各位程序猿有帮助 展示效果 项目目录展示 html代码 css部分代码 * {    ...

  6. python如何播放mp3文件_使用python怎么播放音频

    使用 python 播放音频有以下几种方式: os.system() os.system(file) 调用系统应用来打开文件,file 可为图片或者音频文件. 缺点:要打开具体的应用,不能在后台播放音 ...

  7. 用python做炒股软件-python程序源码_基于python的炒股软件

    股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...

  8. python爱因斯坦的问题_基于Python3的趣味数学问题

    基于Python3的趣味数学问题 Pro1. 数独(Sudoku)根据九宫格盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行.每一列.每一个宫(3*3)内的数字均含1-9这9个数字. Pro2 ...

  9. python打电话播放语音_让电话录音也能看得见,录音一键转为文字

    最近看到有朋友在问手机通话怎么录音?他说他经常需要和领导进行电话会议,每次通话时间都很长,使用通话录音就能将内容记录下来,这样就不会遗忘重要内容了.如果你拥有一个一打电话就仿佛吃了脉动停不下来的领导, ...

最新文章

  1. 常见的面试算法题:创建几个线程按顺序打印数字或者字母(多线程编程)(套用该模板即可)
  2. Java学习笔记——面向对象
  3. netty web 容器_Netty - 高性能网络应用框架常见面试题
  4. wpf将文字转化为图形_工程师们开发出将天然气转化为固体的方法
  5. 使用率激增250%,这份报告再次将 Serverless 推向幕前
  6. 音视频技术开发周刊 | 227
  7. 使系统生成50个0-9之间的随机数,将每个数字出现的次数 存入一个一维数组中,统计出现次数最多和出现次数最少的数字,及出现次数 和出现频率。...
  8. MySQL高级知识(十三)——表锁
  9. 360金融新任首席科学家:别指望AI Lab做成中台
  10. 博文视点读书节第六日丨产品大咖书单阿里云专家直播预告,更有超值代金券手慢无
  11. Mysql查询性能优化
  12. vb.net 教程 6-1 进程 Process类初探
  13. python使用wxpy轻松实现微信防撤回
  14. 万字长文:被阿里收购有多好?凉了有多少?
  15. 大华设备播放过程中设置播放速度
  16. (一)软件测试的目的和定义
  17. 个人理财通Android手机测试,基于Android的个人理财管理系统
  18. 使用微擎 微赞 微信登陆遇到redirect_uri 参数错误的设置办法
  19. GNSS常用术语(缩略语)总结------------持续更新
  20. 【实习面经】头条后台开发岗一面凉经

热门文章

  1. c语言中的pow(x, y)的使用
  2. 聚英国际|【燎原计划启动周第二期AMA】Filecoin经济模型及热点争议解读
  3. [XDOJ]矩阵相乘
  4. 自行车不可以上高速,但是为什么有的人可以从北京骑到西藏?
  5. java测试开发工程师,必须要明白的几处知识(附面试问题)
  6. CCS 使用报错合集 -mcu:cc26xx
  7. 怎么让限制复制的网站能复制
  8. 图像的低频,中频,高频信息含义?
  9. SSD Performance测试简介
  10. Gitee上传代码保姆级教程(亲测有效)