package com.uxxu.konashi.sample.pwmsample; import android.Manifest; import android.bluetooth.BluetoothGattCharacteristic; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.SeekBar; import android.widget.Toast; import com.uxxu.konashi.lib.Konashi; import com.uxxu.konashi.lib.KonashiListener; import com.uxxu.konashi.lib.KonashiManager; import org.jdeferred.DoneCallback; import org.jdeferred.FailCallback; import info.izumin.android.bletia.BletiaException; import permissions.dispatcher.NeedsPermission; import permissions.dispatcher.RuntimePermissions; @RuntimePermissions public class MainActivity extends AppCompatActivity implements View.OnClickListener { public final MainActivity self = this; private KonashiManager mKonashiManager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ((SeekBar) findViewById(R.id.seek_pwm)).setOnSeekBarChangeListener(mOnSeekBarChangeListener); findViewById(R.id.btn_find).setOnClickListener(this); mKonashiManager = new KonashiManager(getApplicationContext()); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); MainActivityPermissionsDispatcher.onRequestPermissionsResult(this, requestCode, grantResults); } @Override protected void onResume() { super.onResume(); mKonashiManager.addListener(mKonashiListener); refreshViews(); } @Override protected void onPause() { mKonashiManager.removeListener(mKonashiListener); super.onPause(); } @Override protected void onDestroy() { new Thread(new Runnable() { @Override public void run() { if(mKonashiManager.isConnected()){ mKonashiManager.reset() .then(new DoneCallback<BluetoothGattCharacteristic>() { @Override public void onDone(BluetoothGattCharacteristic result) { mKonashiManager.disconnect(); } }); } } }).start(); super.onDestroy(); } @NeedsPermission(Manifest.permission.ACCESS_COARSE_LOCATION) void findKonashi() { mKonashiManager.find(this); } private void refreshViews() { boolean isReady = mKonashiManager.isReady(); findViewById(R.id.btn_find).setVisibility(!isReady ? View.VISIBLE : View.GONE); findViewById(R.id.seek_pwm).setVisibility(isReady ? View.VISIBLE : View.GONE); } private final SeekBar.OnSeekBarChangeListener mOnSeekBarChangeListener = new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int i, boolean b) { mKonashiManager.pwmLedDrive(Konashi.PIO1, (float) i); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }; @Override public void onClick(View view) { MainActivityPermissionsDispatcher.findKonashiWithCheck(this); } private final KonashiListener mKonashiListener = new KonashiListener() { @Override public void onConnect(KonashiManager manager) { refreshViews(); mKonashiManager.pwmMode(Konashi.PIO1, Konashi.PWM_ENABLE_LED_MODE) .fail(new FailCallback<BletiaException>() { @Override public void onFail(BletiaException result) { Toast.makeText(self, result.getMessage(), Toast.LENGTH_SHORT).show(); } }); } @Override public void onDisconnect(KonashiManager manager) { refreshViews(); } @Override public void onError(KonashiManager manager, BletiaException e) { } @Override public void onUpdatePioOutput(KonashiManager manager, int value) { } @Override public void onUpdateUartRx(KonashiManager manager, byte[] value) { } @Override public void onUpdateBatteryLevel(KonashiManager manager, int level) { } @Override public void onUpdateSpiMiso(KonashiManager manager, byte[] value) { } }; }