public class TaskMiActivity extends AppCompatActivity {    // private MidiPianoLayout midiPianoLayout;    TextView tv_tv1, tv_tv2;    Button btn_connect;        @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                setContentView(R.layout.activity_task_mi);        tv_tv1 = findViewById(R.id.tv_tv1);        tv_tv2 = findViewById(R.id.tv_tv2);        fl_key = findViewById(R.id.fl_key);        btn_connect = findViewById(R.id.btn_connect);  btn_connect.setOnClickListener(new View.OnClickListener() {           @Override           public void onClick(View v) {               openMidi();           }       });    }    void openMidi() {        MidiManager m = (MidiManager) getSystemService(Context.MIDI_SERVICE);        MidiDeviceInfo[] infos = m.getDevices();        if (infos != null && infos.length > 0) {            int num = 0;            for (int i = 0; i < infos.length; i++) {                if (infos[i].getOutputPortCount() != 0) {                    num = i;                }            }            m.openDevice(infos[num], new MidiManager.OnDeviceOpenedListener() {                @Override                public void onDeviceOpened(MidiDevice device) {                    if (device == null) {                                                Toast.makeText(getBaseContext(), "连接设备失败", Toast.LENGTH_SHORT).show();                    } else {                        MidiDeviceInfo.PortInfo[] ports = device.getInfo().getPorts();                        for (int j = 0; j < ports.length; j++) {                            if (ports[j].getType() == MidiDeviceInfo.PortInfo.TYPE_OUTPUT) {                                int outputNum = ports[j].getPortNumber();                                MidiOutputPort midiOutputPort = device.openOutputPort(outputNum);                                if (midiOutputPort != null) {                                                                        midiOutputPort.connect(new MyReceiver());                                                                        Toast.makeText(getBaseContext(), "连接设备成功", Toast.LENGTH_SHORT).show();                                } else {                                                                        Toast.makeText(getBaseContext(), "连接设备失败", Toast.LENGTH_SHORT).show();                                }                            }                        }                    }                }            }, new Handler(Looper.getMainLooper()));        }    }    class MyReceiver extends MidiReceiver {               public void onSend(final byte[] data, final int offset,                           final int count, final long timestamp) throws IOException {                        runOnUiThread(new Runnable() {                @Override                public void run() {                    if (count == 3) {                        int jw = data[2];                                             tv_tv1.setText("键位:" + jw + "-------" + data[3] + " -----" + offset + "  -----" + count + " ---------" + timestamp);                        Log.e("ContentValues", "键位:" + jw);                        Log.e("ContentValues", "力道:" + data[3]);                        Log.e("ContentValues", "count:" + count);                        Log.e("ContentValues", "offset:" + offset);                        Log.e("ContentValues", "timestamp:" + timestamp);                        StringBuffer sb = new StringBuffer();                        for (int i = 0; i < data.length; i++) {                                                       sb.append("key:" + i + "<-->");                            sb.append("value:" + data[i]);                                                    }                                              tv_tv2.setText("-----" + "所有数据:" + sb.toString());                                          }                }            });        }    }}

更多相关文章

  1. Android连接mysql demo_Android实现登陆功能,Android与服务器数据
  2. Android连接网络
  3. android 登录前检查网络状态
  4. 触摸按键Android的驱动解析
  5. Android中显示照片的Exif信息
  6. Android连接网络问题
  7. Android串口设备的应用实现方案以及与WEB的交互
  8. android辅助开发工具包介绍
  9. Android无线连接打印第三方开发的实现

随机推荐

  1. flea-frame-auth使用之角色权限设计初识
  2. 翻译:《实用的Python编程》01_01_Python
  3. Spring Cloud(Greenwich版)-05-Spring Clou
  4. SpringBoot 配置文件绑定到 javabean
  5. 基于数组或链表实现Map
  6. Spring Boot + Vue3 前后端分离 实战wiki
  7. 7.1 Ansible 动态获取主机清单
  8. 「软件更新」实时数据管理平台,Apache Geo
  9. 14 个 JavaScript 代码优化技巧
  10. React UI 库:React Suite 4.0.2 版本更新-