美文网首页
Android 莫尔斯密码发声器3:速度和声音设定

Android 莫尔斯密码发声器3:速度和声音设定

作者: silencefun | 来源:发表于2018-12-20 22:19 被阅读12次
1布局

输入框下两个seekbar来实现对声音和速度的调控
在输入框输入英文或数字,开始按钮开始播放。

image.png
2实现逻辑

直接上代码

EditText et_input;
TextView tv_start;
private static int volume = 100;       
private static int speed = 100;         

Handler handler = new Handler();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    tv_start = findViewById(R.id.tv_start);
    et_input = findViewById(R.id.et_input);


   
    ((SeekBar) findViewById(R.id.cfg_volume)).setProgress(volume);
    ((SeekBar) findViewById(R.id.cfg_speed)).setProgress(250 - speed);

    tv_start.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (et_input.getText().toString() != null && et_input.getText().toString().length() > 0) {
                volume = ((SeekBar) findViewById(R.id.cfg_volume)).getProgress();
                speed = 250 - ((SeekBar) findViewById(R.id.cfg_speed)).getProgress();
                final Morse beeper = new Morse(speed, volume);
              
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        beeper.sendCode(et_input.getText().toString());
                    }
                });

            }
        }
    });
}

代买比较简单,就是每次点击的时候,初始化一个Morse对象

   public Morse(int dur, int vol) {
    this.dur = dur;
    gen = new ToneGenerator(AudioManager.STREAM_ALARM, vol);
}

在 Morse 的构造方法中实例化一个ToneGenerator对象,来控制发声操作等。

需要注意不能连续点击,否则会出错。AudioFlinger could not create track, status: -12

相当同时多个对象在操作。

实现了第一步的发音操作,细节还有很多没有完善优化。

但是搜集资料查看的一些实现的方式是把发音的音频文件放到raw资源目录下,使用这个声音来播放,这样感觉输出保存音频文件的时候相对而言应该比较方便,暂时(2018年12月20日 )还没又找到怎么把ToneGenerator发出声音保存下来。

待完善部分(TODO LIST):
1.容错控制完善
2.优化实现技巧
3.随机生成100组数字,保存图片
4.数码长码短码的切换
5.单个的字词翻译 存储

相关文章

网友评论

      本文标题:Android 莫尔斯密码发声器3:速度和声音设定

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