package com.shlb.comb.adapter;
|
|
import android.content.Context;
|
import android.view.View;
|
import android.view.ViewGroup;
|
import android.widget.ImageView;
|
import android.widget.TextView;
|
|
|
import com.blakequ.bluetooth_manager_lib.device.BeaconType;
|
import com.blakequ.bluetooth_manager_lib.device.BeaconUtils;
|
import com.blakequ.bluetooth_manager_lib.device.BluetoothLeDevice;
|
import com.blakequ.bluetooth_manager_lib.device.adrecord.AdRecord;
|
import com.blakequ.bluetooth_manager_lib.device.ibeacon.IBeaconDevice;
|
import com.blakequ.bluetooth_manager_lib.util.ByteUtils;
|
import com.shlb.comb.R;
|
import com.shlb.comb.util.Constants;
|
|
|
public class DeviceListAdapter extends BaseArrayListAdapter<BluetoothLeDevice>{
|
|
private int scrodKey;
|
public DeviceListAdapter(Context context) {
|
super(context);
|
}
|
|
public void updateConfig(int scrodKey){
|
this.scrodKey = scrodKey;
|
}
|
|
@Override
|
public View getView(int position, View view, ViewGroup parent) {
|
final ViewHolder viewHolder;
|
// General ListView optimization code.
|
if (view == null) {
|
view = mInflater.inflate(R.layout.dialog_layout_bluetooth_item, null);
|
viewHolder = new ViewHolder();
|
viewHolder.deviceAddress = (TextView) view.findViewById(R.id.device_address);
|
viewHolder.deviceName = (TextView) view.findViewById(R.id.device_name);
|
viewHolder.deviceIcon = (ImageView) view.findViewById(R.id.device_icon);
|
|
view.setTag(viewHolder);
|
} else {
|
viewHolder = (ViewHolder) view.getTag();
|
}
|
|
final BluetoothLeDevice device = (BluetoothLeDevice) getItem(position);
|
final String deviceName = device.getName();
|
final double rssi = device.getRssi();
|
|
if (deviceName != null && deviceName.length() > 0) {
|
viewHolder.deviceName.setText(deviceName);
|
} else {
|
viewHolder.deviceName.setText(R.string.unknown_device);
|
}
|
|
|
|
|
|
return view;
|
}
|
|
public double calculateAccuracy(final int txPower, final double rssi) {
|
if (rssi == 0) {
|
return 0; // if we cannot determine accuracy, return -1.
|
}
|
|
final double ratio = rssi * 1.0 / txPower;
|
if (ratio < 1.0) {
|
return Math.pow(ratio, 10);
|
} else {
|
return (0.89976) * Math.pow(ratio, 7.7095) + 0.111;
|
}
|
}
|
|
static class ViewHolder {
|
TextView deviceName;
|
TextView deviceAddress;
|
ImageView deviceIcon;
|
|
}
|
}
|