80,349
社区成员
发帖
与我相关
我的任务
分享
public class MainActivity extends Activity implements LocationListener {
String id,sql;
ImageButton btn_add_device;
private ListView show_item;
private SimpleAdapter adapter;
private SQLiteDatabase db;
private Cursor cursor;
private DBHelper dbHelper;
HashMap<String, Integer> record = new HashMap<String, Integer>();
private Long startTime;
private Handler timer = new Handler();
LocationManager locationManager;
private BluetoothAdapter mBluetoothAdapter;
private int REQUEST_ENABLE_BT = 1234;
private Handler mHandler;
private static final long SCAN_PERIOD = 10000;
private BluetoothLeScanner mLEScanner;
private ScanSettings settings;
private List<ScanFilter> filters;
private BluetoothGatt mGatt;
UUID targetUUID = UUID.fromString("4d414749-4241-4447-4e11-0812740111f0");
UUID uuids[] = {targetUUID};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getActionBar().setDisplayHomeAsUpEnabled(true);
show_item = (ListView) findViewById(R.id.lv_show_item);
//宣告倒數
mHandler = new Handler();
//ble
if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
Toast.makeText(this, "BLE Not Supported",
Toast.LENGTH_SHORT).show();
finish();
}
final BluetoothManager bluetoothManager =
(BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBluetoothAdapter = bluetoothManager.getAdapter();
dbHelper = new DBHelper(this);
//解析json
//StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects()
.penaltyLog()
.penaltyDeath()
.build());
//清單面版
adapter = new SimpleAdapter(this, getDatas(),
R.layout.main_item_list,
new String[]{"item_name", "item_mac"},
new int[]{R.id.item_name, R.id.item_mac});
show_item.setAdapter(adapter);
adapter.setViewBinder(new SimpleAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Object data, String textRepresentation) {
return false;
}
});
show_item.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
return false;
}
});
//點選清單
show_item.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
ListView listView = (ListView) arg0;
View view = listView.getChildAt(arg2);
TextView text = (TextView) view.findViewById(R.id.item_mac);
//Toast.makeText(MainActivity.this,text.getText().toString(),Toast.LENGTH_LONG).show();
gotomap(text.getText().toString());
}
});
//計時器設定
startTime = System.currentTimeMillis();
//設定定時要執行的方法
timer.removeCallbacks(updateTimer);
//設定Delay的時間
timer.postDelayed(updateTimer, 5000);
}
/**
* 設定清單資料
*
* 要去資料庫抓
* 還沒設資料庫k
*
* */
private List getDatas() {
List list = new ArrayList();
//db = openOrCreateDatabase("however_find.db", MODE_PRIVATE, null);
db =dbHelper.getReadableDatabase();
cursor = db.rawQuery("select _id, name from item_info",null);
//cursor = db.rawQuery("delete from item_info",null);
if (cursor != null && cursor.getCount()>=0) {
int i = cursor.getCount();
//for(int k=0;k<i;k++) {
while (cursor.moveToNext()){
try{
//Toast.makeText(MainActivity.this, k+" "+i, Toast.LENGTH_LONG).show();
String mac = cursor.getString(0);
String name = cursor.getString(1);
//Toast.makeText(MainActivity.this, mac+" "+name, Toast.LENGTH_LONG).show();
Map map = new HashMap();
map.put("item_name", name);
map.put("item_mac", mac);
list.add(map);
}
catch (Exception e)
{
Toast.makeText(MainActivity.this, "錯錯錯錯錯", Toast.LENGTH_LONG).show();
}
}
db.close();
}
return list;
}
@Override
protected void onResume() {
super.onResume();
if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
} else {
if (Build.VERSION.SDK_INT >= 21) {
mLEScanner = mBluetoothAdapter.getBluetoothLeScanner();
ScanFilter filter = new ScanFilter.Builder()
.setServiceUuid(ParcelUuid.fromString("4d414749-4241-4447-4e11-0812740111f0"))
.build();
filters = new ArrayList<ScanFilter>();
filters.add(filter);
settings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
}
scanLeDevice(true);
}
}
@Override
protected void onPause() {
super.onPause();
if (mBluetoothAdapter != null && mBluetoothAdapter.isEnabled()) {
scanLeDevice(false);
} }
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_ENABLE_BT) {
if (resultCode == Activity.RESULT_CANCELED) {
//Bluetooth not enabled.
finish();
return;
} }
super.onActivityResult(requestCode, resultCode, data);
}
private void scanLeDevice(final boolean enable) {
if (enable) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (Build.VERSION.SDK_INT < 21) {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
} else {
mLEScanner.stopScan(mScanCallback);
}
} }, SCAN_PERIOD);
if (Build.VERSION.SDK_INT < 21) {
mBluetoothAdapter.startLeScan(mLeScanCallback);
} else {
mLEScanner.startScan(filters, settings, mScanCallback);
}
} else {
if (Build.VERSION.SDK_INT < 21) {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
} else {
mLEScanner.stopScan(mScanCallback);
} } }
String device_mac;
Integer device_rssi;
private ScanCallback mScanCallback = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
Log.i("callbackType", String.valueOf(callbackType));
Log.i("result", result.toString());
BluetoothDevice btDevice = result.getDevice();
//connectToDevice(btDevice);
Log.i("jiejv",btDevice.getAddress());
device_mac = btDevice.getAddress();
device_rssi = result.getRssi();
if(device_mac.equals(null) || device_rssi== null)
Log.i("jiejv",device_mac+"空空空"+device_rssi);
else
{
record.put(device_mac,device_rssi);
}
//if(update_record(device_mac,device_rssi))
Log.i("jiejv",device_mac+" "+device_rssi);
}
@Override
public void onBatchScanResults(List<ScanResult> results) {
for (ScanResult sr : results) {
Log.i("ScanResult - Results", sr.toString());
} }
@Override
public void onScanFailed(int errorCode) {
Log.e("Scan Failed", "Error Code: " + errorCode);
}};
private BluetoothAdapter.LeScanCallback mLeScanCallback =
new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi,
byte[] scanRecord) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Log.i("onLeScan", device.toString());
//connectToDevice(device);
}
});
}
};
}