Added navigation class to abstract activity launching
This commit is contained in:
@@ -64,14 +64,6 @@
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
|
||||
@@ -80,6 +72,14 @@
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
|
||||
@@ -131,6 +131,7 @@
|
||||
<orderEntry type="library" exported="" name="support-vector-drawable-24.2.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="animated-vector-drawable-24.2.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="permissions-1.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="easycursor-android-1.0.0" level="project" />
|
||||
<orderEntry type="module" module-name="library" exported="" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -1,15 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest
|
||||
package="uk.co.alt236.btlescan"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="uk.co.alt236.btlescan">
|
||||
|
||||
<uses-permission android:name="android.permission.BLUETOOTH"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
|
||||
<uses-feature
|
||||
android:name="android.hardware.bluetooth_le"
|
||||
android:required="false"/>
|
||||
android:required="false" />
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
@@ -20,20 +19,18 @@
|
||||
android:name=".ui.main.MainActivity"
|
||||
android:label="@string/app_name">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name=".ui.details.DeviceDetailsActivity"
|
||||
android:label="@string/app_name">
|
||||
</activity>
|
||||
<activity android:name=".ui.control.DeviceControlActivity"/>
|
||||
<activity android:name=".ui.details.DeviceDetailsActivity" />
|
||||
|
||||
<activity android:name=".ui.control.DeviceControlActivity" />
|
||||
|
||||
<service
|
||||
android:name="uk.co.alt236.btlescan.services.BluetoothLeService"
|
||||
android:enabled="true"/>
|
||||
android:enabled="true" />
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
@@ -0,0 +1,34 @@
|
||||
package uk.co.alt236.btlescan.ui.common;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
|
||||
import uk.co.alt236.bluetoothlelib.device.BluetoothLeDevice;
|
||||
import uk.co.alt236.btlescan.ui.control.DeviceControlActivity;
|
||||
import uk.co.alt236.btlescan.ui.details.DeviceDetailsActivity;
|
||||
|
||||
public class Navigation {
|
||||
|
||||
private final Activity mActivity;
|
||||
|
||||
public Navigation(final Activity activity) {
|
||||
mActivity = activity;
|
||||
}
|
||||
|
||||
public void openDetailsActivity(final BluetoothLeDevice device) {
|
||||
final Intent intent = DeviceDetailsActivity.createIntent(mActivity, device);
|
||||
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
public void startControlActivity(final BluetoothLeDevice device) {
|
||||
final Intent intent = DeviceControlActivity.createIntent(mActivity, device);
|
||||
|
||||
startActivity(intent);
|
||||
}
|
||||
|
||||
private void startActivity(final Intent intent) {
|
||||
ActivityCompat.startActivity(mActivity, intent, null);
|
||||
}
|
||||
}
|
||||
+25
-14
@@ -26,6 +26,7 @@ import android.content.IntentFilter;
|
||||
import android.content.ServiceConnection;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.util.Log;
|
||||
import android.view.Menu;
|
||||
@@ -55,7 +56,7 @@ import uk.co.alt236.btlescan.services.BluetoothLeService;
|
||||
* Bluetooth LE API.
|
||||
*/
|
||||
public class DeviceControlActivity extends AppCompatActivity {
|
||||
public static final String EXTRA_DEVICE = DeviceControlActivity.class.getName() + ".EXTRA_DEVICE";
|
||||
private static final String EXTRA_DEVICE = DeviceControlActivity.class.getName() + ".EXTRA_DEVICE";
|
||||
private final static String TAG = DeviceControlActivity.class.getSimpleName();
|
||||
private static final String LIST_NAME = "NAME";
|
||||
private static final String LIST_UUID = "UUID";
|
||||
@@ -103,7 +104,7 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
private String mDeviceAddress;
|
||||
|
||||
// Code to manage Service lifecycle.
|
||||
private final ServiceConnection mServiceConnection = new ServiceConnection() {
|
||||
@Override
|
||||
@@ -114,7 +115,7 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
finish();
|
||||
}
|
||||
// Automatically connects to the device upon successful start-up initialization.
|
||||
mBluetoothLeService.connect(mDeviceAddress);
|
||||
mBluetoothLeService.connect(mDevice.getAddress());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -122,7 +123,7 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
mBluetoothLeService = null;
|
||||
}
|
||||
};
|
||||
private String mDeviceName;
|
||||
private BluetoothLeDevice mDevice;
|
||||
private boolean mConnected = false;
|
||||
private String mExportString;
|
||||
// Handles various events fired by the Service.
|
||||
@@ -173,7 +174,10 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
// on the UI.
|
||||
private void displayGattServices(final List<BluetoothGattService> gattServices) {
|
||||
if (gattServices == null) return;
|
||||
mExportString = mExporter.generateExportString(mDeviceName, mDeviceAddress, gattServices);
|
||||
mExportString = mExporter.generateExportString(
|
||||
mDevice.getName(),
|
||||
mDevice.getAddress(),
|
||||
gattServices);
|
||||
|
||||
String uuid = null;
|
||||
final String unknownServiceString = getResources().getString(R.string.unknown_service);
|
||||
@@ -230,16 +234,14 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
setContentView(R.layout.activity_gatt_services);
|
||||
|
||||
final Intent intent = getIntent();
|
||||
final BluetoothLeDevice device = intent.getParcelableExtra(EXTRA_DEVICE);
|
||||
mDeviceName = device.getName();
|
||||
mDeviceAddress = device.getAddress();
|
||||
mDevice = intent.getParcelableExtra(EXTRA_DEVICE);
|
||||
ButterKnife.bind(this);
|
||||
|
||||
// Sets up UI references.
|
||||
((TextView) findViewById(R.id.device_address)).setText(mDeviceAddress);
|
||||
((TextView) findViewById(R.id.device_address)).setText(mDevice.getAddress());
|
||||
mGattServicesList.setOnChildClickListener(servicesListClickListner);
|
||||
|
||||
getSupportActionBar().setTitle(mDeviceName);
|
||||
getSupportActionBar().setTitle(mDevice.getName());
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
mExporter = new Exporter(this);
|
||||
@@ -279,7 +281,7 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
public boolean onOptionsItemSelected(final MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_connect:
|
||||
mBluetoothLeService.connect(mDeviceAddress);
|
||||
mBluetoothLeService.connect(mDevice.getAddress());
|
||||
return true;
|
||||
case R.id.menu_disconnect:
|
||||
mBluetoothLeService.disconnect();
|
||||
@@ -289,7 +291,10 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
return true;
|
||||
case R.id.menu_share:
|
||||
final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
|
||||
final String subject = getString(R.string.exporter_email_device_services_subject, mDeviceName, mDeviceAddress);
|
||||
final String subject = getString(
|
||||
R.string.exporter_email_device_services_subject,
|
||||
mDevice.getName(),
|
||||
mDevice.getAddress());
|
||||
|
||||
intent.setType("text/plain");
|
||||
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject);
|
||||
@@ -315,7 +320,7 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
super.onResume();
|
||||
registerReceiver(mGattUpdateReceiver, makeGattUpdateIntentFilter());
|
||||
if (mBluetoothLeService != null) {
|
||||
final boolean result = mBluetoothLeService.connect(mDeviceAddress);
|
||||
final boolean result = mBluetoothLeService.connect(mDevice.getAddress());
|
||||
Log.d(TAG, "Connect request result=" + result);
|
||||
}
|
||||
}
|
||||
@@ -339,7 +344,7 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
}
|
||||
|
||||
mConnectionState.setText(resourceId);
|
||||
mConnectionState.setTextColor(getResources().getColor(colourId));
|
||||
mConnectionState.setTextColor(ContextCompat.getColor(DeviceControlActivity.this, colourId));
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -360,4 +365,10 @@ public class DeviceControlActivity extends AppCompatActivity {
|
||||
return string;
|
||||
}
|
||||
}
|
||||
|
||||
public static Intent createIntent(final Context context, final BluetoothLeDevice device) {
|
||||
final Intent intent = new Intent(context, DeviceControlActivity.class);
|
||||
intent.putExtra(DeviceControlActivity.EXTRA_DEVICE, device);
|
||||
return intent;
|
||||
}
|
||||
}
|
||||
+19
-10
@@ -1,5 +1,6 @@
|
||||
package uk.co.alt236.btlescan.ui.details;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
@@ -21,9 +22,9 @@ import uk.co.alt236.bluetoothlelib.device.beacon.BeaconUtils;
|
||||
import uk.co.alt236.bluetoothlelib.device.beacon.ibeacon.IBeaconManufacturerData;
|
||||
import uk.co.alt236.bluetoothlelib.util.ByteUtils;
|
||||
import uk.co.alt236.btlescan.R;
|
||||
import uk.co.alt236.btlescan.ui.common.Navigation;
|
||||
import uk.co.alt236.btlescan.ui.common.recyclerview.RecyclerViewBinderCore;
|
||||
import uk.co.alt236.btlescan.ui.common.recyclerview.RecyclerViewItem;
|
||||
import uk.co.alt236.btlescan.ui.control.DeviceControlActivity;
|
||||
import uk.co.alt236.btlescan.ui.details.recyclerview.model.AdRecordItem;
|
||||
import uk.co.alt236.btlescan.ui.details.recyclerview.model.DeviceInfoItem;
|
||||
import uk.co.alt236.btlescan.ui.details.recyclerview.model.HeaderItem;
|
||||
@@ -32,7 +33,7 @@ import uk.co.alt236.btlescan.ui.details.recyclerview.model.RssiItem;
|
||||
import uk.co.alt236.btlescan.ui.details.recyclerview.model.TextItem;
|
||||
|
||||
public class DeviceDetailsActivity extends AppCompatActivity {
|
||||
public static final String EXTRA_DEVICE = DeviceDetailsActivity.class.getName() + ".EXTRA_DEVICE";
|
||||
private static final String EXTRA_DEVICE = DeviceDetailsActivity.class.getName() + ".EXTRA_DEVICE";
|
||||
private static final int LAYOUT_ID = R.layout.activity_details;
|
||||
|
||||
@Bind(R.id.recycler)
|
||||
@@ -48,6 +49,9 @@ public class DeviceDetailsActivity extends AppCompatActivity {
|
||||
mRecycler.setLayoutManager(new LinearLayoutManager(this));
|
||||
mDevice = getIntent().getParcelableExtra(EXTRA_DEVICE);
|
||||
|
||||
getSupportActionBar().setTitle(mDevice.getName());
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
pupulateDetails(mDevice);
|
||||
}
|
||||
|
||||
@@ -61,15 +65,13 @@ public class DeviceDetailsActivity extends AppCompatActivity {
|
||||
public boolean onOptionsItemSelected(final MenuItem item) {
|
||||
switch (item.getItemId()) {
|
||||
case R.id.menu_connect:
|
||||
|
||||
final Intent intent = new Intent(this, DeviceControlActivity.class);
|
||||
intent.putExtra(DeviceControlActivity.EXTRA_DEVICE, mDevice);
|
||||
|
||||
startActivity(intent);
|
||||
|
||||
break;
|
||||
new Navigation(this).startControlActivity(mDevice);
|
||||
return true;
|
||||
case android.R.id.home:
|
||||
onBackPressed();
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
return super.onOptionsItemSelected(item);
|
||||
}
|
||||
|
||||
private void pupulateDetails(final BluetoothLeDevice device) {
|
||||
@@ -113,4 +115,11 @@ public class DeviceDetailsActivity extends AppCompatActivity {
|
||||
final RecyclerViewBinderCore core = RecyclerViewCoreFactory.create(this);
|
||||
mRecycler.setAdapter(new DetailsRecyclerAdapter(core, list));
|
||||
}
|
||||
|
||||
public static Intent createIntent(Context context, BluetoothLeDevice device) {
|
||||
final Intent intent = new Intent(context, DeviceDetailsActivity.class);
|
||||
intent.putExtra(DeviceDetailsActivity.EXTRA_DEVICE, device);
|
||||
|
||||
return intent;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@ package uk.co.alt236.btlescan.ui.main;
|
||||
import android.Manifest;
|
||||
import android.bluetooth.BluetoothAdapter;
|
||||
import android.bluetooth.BluetoothDevice;
|
||||
import android.content.Intent;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
@@ -23,7 +22,7 @@ import butterknife.ButterKnife;
|
||||
import uk.co.alt236.bluetoothlelib.device.BluetoothLeDevice;
|
||||
import uk.co.alt236.btlescan.R;
|
||||
import uk.co.alt236.btlescan.containers.BluetoothLeDeviceStore;
|
||||
import uk.co.alt236.btlescan.ui.details.DeviceDetailsActivity;
|
||||
import uk.co.alt236.btlescan.ui.common.Navigation;
|
||||
import uk.co.alt236.btlescan.util.BluetoothLeScanner;
|
||||
import uk.co.alt236.btlescan.util.BluetoothUtils;
|
||||
import uk.co.alt236.easycursor.objectcursor.EasyObjectCursor;
|
||||
@@ -101,12 +100,7 @@ public class MainActivity extends AppCompatActivity implements AdapterView.OnIte
|
||||
@Override
|
||||
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
|
||||
final BluetoothLeDevice device = mDeviceListAdapter.getItem(position);
|
||||
if (device == null) return;
|
||||
|
||||
final Intent intent = new Intent(this, DeviceDetailsActivity.class);
|
||||
intent.putExtra(DeviceDetailsActivity.EXTRA_DEVICE, device);
|
||||
|
||||
startActivity(intent);
|
||||
new Navigation(this).openDetailsActivity(device);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user