Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Copyright 2015 MbientLab Inc. All rights reserved.
- */
- package com.mbientlab.freefalldetector;
- import android.app.Activity;
- import android.bluetooth.BluetoothDevice;
- import android.bluetooth.BluetoothManager;
- import android.content.ComponentName;
- import android.content.Context;
- import android.content.Intent;
- import android.content.ServiceConnection;
- import android.os.Bundle;
- import android.os.IBinder;
- import android.util.Log;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.view.View;
- import com.mbientlab.metawear.AsyncOperation;
- import com.mbientlab.metawear.Message;
- import com.mbientlab.metawear.MetaWearBleService;
- import com.mbientlab.metawear.MetaWearBoard;
- import com.mbientlab.metawear.RouteManager;
- import com.mbientlab.metawear.UnsupportedModuleException;
- import com.mbientlab.metawear.module.Accelerometer;
- import com.mbientlab.metawear.module.Debug;
- import com.mbientlab.metawear.module.Led;
- import com.mbientlab.metawear.processor.Average;
- import com.mbientlab.metawear.processor.Comparison;
- import com.mbientlab.metawear.processor.Rss;
- import com.mbientlab.metawear.processor.Threshold;
- import com.mbientlab.metawear.module.Macro;
- import com.mbientlab.metawear.module.Haptic;
- public class MainActivity extends Activity implements ServiceConnection {
- private static final String LOG_TAG = "UpOrientationDetector", UP_KEY= "up_key", NOUP_KEY="noup_key";
- private MetaWearBleService.LocalBinder serviceBinder;
- private MetaWearBoard mwBoard;
- private Accelerometer accelModule;
- private Led ledModule;
- private Debug debugModule;
- private Haptic hapticModule;
- private Macro macroModule;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- getApplicationContext().bindService(new Intent(this, MetaWearBleService.class), this, Context.BIND_AUTO_CREATE);
- findViewById(R.id.start_accel).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- accelModule.enableAxisSampling();
- accelModule.start();
- }
- });
- findViewById(R.id.stop_accel).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- accelModule.stop();
- accelModule.disableAxisSampling();
- }
- });
- findViewById(R.id.reset_board).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- debugModule.resetDevice();
- }
- });
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- getApplicationContext().unbindService(this);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_main, menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically handle clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
- //noinspection SimplifiableIfStatement
- if (id == R.id.action_settings) {
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- serviceBinder= (MetaWearBleService.LocalBinder) service;
- String mwMacAddress= "C2:CC:7D:02:FE:23"; ///< Put your board's MAC address here
- BluetoothManager btManager= (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
- BluetoothDevice btDevice= btManager.getAdapter().getRemoteDevice(mwMacAddress);
- mwBoard= serviceBinder.getMetaWearBoard(btDevice);
- mwBoard.setConnectionStateHandler(new MetaWearBoard.ConnectionStateHandler() {
- @Override
- public void connected() {
- Log.i(LOG_TAG, "Connected");
- try {
- accelModule= mwBoard.getModule(Accelerometer.class);
- accelModule.enableAxisSampling();
- accelModule.start();
- Log.i(LOG_TAG, "accelModule loaded");
- ledModule= mwBoard.getModule(Led.class);
- Log.i(LOG_TAG, "ledModule loaded");
- hapticModule = mwBoard.getModule(Haptic.class);
- Log.i(LOG_TAG, "hapticModule loaded");
- macroModule = mwBoard.getModule(Macro.class);
- Log.i(LOG_TAG, "macrocModule loaded");
- ledModule.configureColorChannel(Led.ColorChannel.BLUE)
- .setRiseTime((short) 0).setPulseDuration((short) 1000)
- .setRepeatCount((byte) 5).setHighTime((short) 500)
- .setHighIntensity((byte) 16).setLowIntensity((byte) 16)
- .commit();
- accelModule.setOutputDataRate(50f); ///< Set operating freq to 50Hz
- macroModule.record(new Macro.CodeBlock() {
- @Override
- public void commands() {
- accelModule.routeData().fromXAxis()
- //.process(new Rss())
- .process(new Average((byte) 8))
- .process(new Threshold(0.9f, Threshold.OutputMode.BINARY))
- .split()
- .branch().process(new Comparison(Comparison.Operation.EQ, -1)).stream(NOUP_KEY)
- .branch().process(new Comparison(Comparison.Operation.EQ, 1)).stream(UP_KEY)
- .end()
- .commit().onComplete(new AsyncOperation.CompletionHandler<RouteManager>() {
- @Override
- public void success(RouteManager result) {
- result.subscribe(UP_KEY, new RouteManager.MessageHandler() { //setLogMessageHandler(UP_KEY, new RouteManager.MessageHandler() {
- @Override
- public void process(Message message) {
- Log.i(LOG_TAG, "UP");
- ledModule.play(true);
- hapticModule.startMotor((short) 500);
- }
- });
- result.subscribe(NOUP_KEY, new RouteManager.MessageHandler() {//setLogMessageHandler(NOUP_KEY, new RouteManager.MessageHandler() {
- @Override
- public void process(Message message) {
- Log.i(LOG_TAG, "DOWN");
- }
- });
- }
- });
- } });
- debugModule= mwBoard.getModule(Debug.class);
- } catch (UnsupportedModuleException e) {
- Log.e(LOG_TAG, "Cannot find module", e);
- }
- }
- @Override
- public void disconnected() {
- Log.i(LOG_TAG, "Disconnected");
- }
- });
- mwBoard.connect();
- }
- @Override
- public void onServiceDisconnected(ComponentName name) {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement