美文网首页
Android 使用tinyalsa录制的方法

Android 使用tinyalsa录制的方法

作者: Miyok | 来源:发表于2019-07-25 10:08 被阅读0次

    网上搜索相关内容 会出现很多编译、运行方式,但都是命令行工具,有人就问了:到底安卓上能不能用、怎么用

    本文简单介绍如何在安卓项目中使用方式(前提是已经集成tinyalsa或已推送到系统文件中)

    1.开始录音

    String cmd = "tinycap " + main_path + "channel_1.pcm -D 1 -d 0 -c 1 -r 48000" + "-b 16";
    
    try {
                process = Runtime.getRuntime().exec(cmd);
            } catch (IOException e) {
                e.printStackTrace();
            }
    

    这是参数含义:
    * -D card 声卡
    * -d device 设备
    * -c channels 通道
    * -r rate 采样率
    * -b bits pcm 位宽
    * -p period_size 一次中断的帧数
    * -n n_periods 周期数

    main_path为录音文件存放路径 自行设定

    2.拿到进程pid

    
                pid = getProcessId(process);
    
    /**
         * by miyoko
         * @param process 进程
         * @return
         */
        private static int getProcessId(Process process) {
            String str = process.toString();
            try {
                int i = str.indexOf("[") + 1;
                int j = str.indexOf("]");
                str = str.substring(i, j);
                String[] keys = str.split(",");
                for (int ii = 0; ii < keys.length; ii++) {
                    if (keys[ii].startsWith("pid")) {
                        int deng = keys[ii].indexOf("=") + 1;
                        String id = keys[ii].substring(deng);
                        id = id.trim();
                        return Integer.parseInt(id);
                    } else {
                        continue;
                    }
                }
                return 0;
            } catch (Exception e) {
                return 0;
            }
        }
    

    3.结束录音
    有两种办法
    1>

    if (process != null) {
                process.destroy();
            }
    

    2>

     try {
                process_kill = Runtime.getRuntime().exec("kill -9 " + pid);
            } catch (IOException e) {
                e.printStackTrace();
            }
    

    推荐使用第一种方法,可以比较安全的结束录制。不过实际使用中会碰到几个特殊情况(不细说,碰见了自然会知道)使用第一种方法就不能结束录音,这时候再使用第二种方法强行结束录音。

    以上 by:Miyok

    相关文章

      网友评论

          本文标题:Android 使用tinyalsa录制的方法

          本文链接:https://www.haomeiwen.com/subject/lejcrctx.html