package com.clj.blesample.tool.operation;
import android.bluetooth.BluetoothGatt;
import android.bluetooth.BluetoothGattService;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.clj.blesample.R;
import com.clj.blesample.tool.BluetoothService;
import java.util.ArrayList;
import java.util.List;
public class ServiceListFragment extends Fragment {
private TextView txt_name, txt_mac;
private ResultAdapter mResultAdapter;
private BluetoothService mBluetoothService;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBluetoothService = ((OperationActivity) getActivity()).getBluetoothService();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_service_list, null);
initView(v);
showData();
return v;
}
private void initView(View v) {
txt_name = (TextView) v.findViewById(R.id.txt_name);
txt_mac = (TextView) v.findViewById(R.id.txt_mac);
mResultAdapter = new ResultAdapter(getActivity());
ListView listView_device = (ListView) v.findViewById(R.id.list_service);
listView_device.setAdapter(mResultAdapter);
listView_device.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
BluetoothGattService service = mResultAdapter.getItem(position);
mBluetoothService.setService(service);
((OperationActivity) getActivity()).changePage(1);
}
});
}
private void showData() {
String name = mBluetoothService.getName();
String mac = mBluetoothService.getMac();
BluetoothGatt gatt = mBluetoothService.getGatt();
txt_name.setText(String.valueOf("设备广播名:" + name));
txt_mac.setText(String.valueOf("MAC地址: " + mac));
mResultAdapter.clear();
for (final BluetoothGattService service : gatt.getServices()) {
mResultAdapter.addResult(service);
}
mResultAdapter.notifyDataSetChanged();
}
private class ResultAdapter extends BaseAdapter {
private Context context;
private List<BluetoothGattService> bluetoothGattServices;
ResultAdapter(Context context) {
this.context = context;
bluetoothGattServices = new ArrayList<>();
}
void addResult(BluetoothGattService service) {
bluetoothGattServices.add(service);
}
void clear() {
bluetoothGattServices.clear();
}
@Override
public int getCount() {
return bluetoothGattServices.size();
}
@Override
public BluetoothGattService getItem(int position) {
if (position > bluetoothGattServices.size())
return null;
return bluetoothGattServices.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView != null) {
holder = (ViewHolder) convertView.getTag();
} else {
convertView = View.inflate(context, R.layout.adapter_service, null);
holder = new ViewHolder();
convertView.setTag(holder);
holder.txt_title = (TextView) convertView.findViewById(R.id.txt_title);
holder.txt_uuid = (TextView) convertView.findViewById(R.id.txt_uuid);
holder.txt_type = (TextView) convertView.findViewById(R.id.txt_type);
}
BluetoothGattService service = bluetoothGattServices.get(position);
String uuid = service.getUuid().toString();
holder.txt_title.setText(String.valueOf("服务" + "(" + position + ")"));
holder.txt_uuid.setText(uuid);
holder.txt_type.setText("类型(主服务)");
return convertView;
}
class ViewHolder {
TextView txt_title;
TextView txt_uuid;
TextView txt_type;
}
}
}