Java
Latest commit b32b3d9 Oct 12, 2015 @d4rken Merge pull request #6 from d4rken/dev
Fixed UUID for MotionCharacteristics
Permalink
Failed to load latest commit information.
exampleapp
gradle/wrapper Code to publish the library on jCenter. Aug 10, 2015
myolib UUID for MotionEvent data was wrong (thalmiclabs/myo-bluetooth@05c2f9d) Oct 12, 2015
.gitignore First commit of library files. Jul 31, 2015
LICENSE Update LICENSE Aug 3, 2015
README.md
build.gradle
gradle.properties
gradlew First commit of library files. Jul 31, 2015
gradlew.bat First commit of library files. Jul 31, 2015
settings.gradle First commit of library files. Jul 31, 2015

README.md

This is an Android library to communicate with Myo devices.

It was created for a research project at the mHealth - Uniklinik RWTH Aachen deparment. The projected required receiving sensor data (Gyro, Accl., EMG) from multiple Myo devices simultaneously, which was not possible at that time (August 2015) through the official Android SDK for Myo from Thalmic Labs.

Contributions are welcome. If you submit pull-requests please adhere to the projects current coding style. If you are using this library, i would love mention your project here, feel free to contact me.

Setup

Include this in your apps build.gradle file:

compile 'eu.darken.myolib:myolib:0.0.4'

Download

Examples

Utilizing callbacks

MyoConnector connector = new MyoConnector(getContext());
connector.scan(5000, new MyoConnector.ScannerCallback() {
    @Override
    public void onScanFinished(List<Myo> myos) {
        Myo myo = myos.get(0);
        myo.connect();
        myo.writeUnlock(MyoCmds.UnlockType.HOLD, new Myo.MyoCommandCallback() {
            @Override
            public void onCommandDone(Myo myo, MyoMsg msg) {
                myo.writeVibrate(MyoCmds.VibrateType.LONG, null);
            }
        });
    }
});

Receiving sensor data

/**
 * ...
 */
Myo myo = myos.get(0);
myo.connect();
EmgProcessor emgProcessor = new EmgProcessor();
myo.addProcessor(emgProcessor);
emgProcessor.addListener(new EmgProcessor.EmgDataListener() {
    @Override
    public void onNewEmgData(EmgData emgData) {
        Log.i("EMG-Data", Arrays.toString(emgData.getData()));
    }
});

Advanced use

BaseMyo baseMyo = new BaseMyo(getContext(), bluetoothDevice);
baseMyo.connect();
ReadMsg readMsg = new ReadMsg(Battery.BATTERYLEVEL, new MyoMsg.Callback() {
    @Override
    public void onResult(MyoMsg msg) {
        byte[] result = ((ReadMsg) msg).getValue();
    }
});
baseMyo.submit(readMsg);

Advanced advanced use

BaseMyo baseMyo = new BaseMyo(getContext(), bluetoothDevice);
baseMyo.connect();
WriteMsg writeMsg = new WriteMsg(
        UUID.fromString("00001800-0000-1000-8000-00805f9b34fb"),
        UUID.fromString("00002A00-0000-1000-8000-00805f9b34fb"),
        null,
        new byte[]{ /*....*/},
        new MyoMsg.Callback() {
            @Override
            public void onResult(MyoMsg msg) {
                if(msg.getGattStatus() == BluetoothGatt.GATT_SUCCESS)
                    Log.i("MYOAPP", "Data written!");
            }
        }

);
baseMyo.submit(writeMsg);

License

This library is licensed under Apache 2.0, see LICENSE

If you use "Android Myo library by darken" for your publication, please cite the following publication:

  • Kutafina E, Laukamp D, Jonas SM. Wearable Sensors in Medical Education: Supporting Hand Hygiene Training with a Forearm EMG. Stud Health Technol Inform. 2015;211:286-91.

Example app