Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.HashSet;
- import java.util.Set;
- import android.app.Activity;
- import android.bluetooth.BluetoothAdapter;
- import android.bluetooth.BluetoothDevice;
- import android.content.BroadcastReceiver;
- import android.content.Context;
- import android.content.Intent;
- import android.content.IntentFilter;
- import android.os.Bundle;
- import android.view.LayoutInflater;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.AdapterView.OnItemClickListener;
- import android.widget.ArrayAdapter;
- import android.widget.Button;
- import android.widget.ListView;
- import android.widget.TextView;
- public class BluetoothFragment extends BaseFragment implements OnItemClickListener, OnClickListener {
- private int language = 0;
- private TextView textViewPairedDevices = null;
- private ListView listViewPairedDevices = null;
- private ArrayAdapter<String> adapterPairedDevices = null;
- private TextView textViewNewDevices = null;
- private ListView listViewNewDevices = null;
- private ArrayAdapter<String> adapterNewDevices = null;
- private Button buttonScan = null;
- private BluetoothBroadcastReceiver bluetoothBroadcastReceiver = null;
- private BluetoothAdapter bluetoothAdapter = null;
- private Set<BluetoothDevice> pairedDevices = null;
- private Set<String> newDevices = null;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- Bundle extras = this.getActivity().getIntent().getExtras();
- if(extras != null) {
- this.language = extras.getInt(Globals.KEY_LANGUAGE);
- }
- }
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- return inflater.inflate(R.layout.activity_bluetooth_fragment, container, false);
- }
- @Override
- public void onViewCreated(View view, Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- this.getActivity().setResult(Activity.RESULT_CANCELED);
- this.adapterPairedDevices = new ArrayAdapter<String>(this.getActivity(), R.layout.activity_bluetooth_fragment_device);
- this.adapterNewDevices = new ArrayAdapter<String>(this.getActivity(), R.layout.activity_bluetooth_fragment_device);
- this.textViewPairedDevices = (TextView) view.findViewById(R.id.bluetooth_textview_paired_devices);
- this.textViewNewDevices = (TextView) view.findViewById(R.id.bluetooth_textview_new_devices);
- this.listViewPairedDevices = (ListView) view.findViewById(R.id.bluetooth_listview_paired_devices);
- this.listViewPairedDevices.setAdapter(this.adapterPairedDevices);
- this.listViewPairedDevices.setOnItemClickListener(this);
- this.listViewNewDevices = (ListView) view.findViewById(R.id.bluetooth_listview_new_devices);
- this.listViewNewDevices.setAdapter(this.adapterNewDevices);
- this.listViewNewDevices.setOnItemClickListener(this);
- this.buttonScan = (Button) view.findViewById(R.id.bluetooth_button_scan);
- this.buttonScan.setOnClickListener(this);
- }
- @Override
- public void onResume() {
- super.onResume();
- this.init();
- if (this.bluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) {
- this.getActivity().finish();
- }
- }
- @Override
- public void onPause() {
- super.onPause();
- if (this.bluetoothAdapter != null) {
- this.bluetoothAdapter.cancelDiscovery();
- }
- this.getActivity().unregisterReceiver(this.bluetoothBroadcastReceiver);
- }
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
- this.bluetoothAdapter.cancelDiscovery();
- String info = ((TextView) view).getText().toString();
- if (info != null) {
- String[] infos = info.split("\n");
- String name= infos[0];
- String address = infos[1];
- Intent intent = new Intent();
- intent.putExtra(Globals.EXTRA_DEVICE_NAME, name);
- intent.putExtra(Globals.EXTRA_DEVICE_ADDRESS, address);
- this.getActivity().setResult(Activity.RESULT_OK, intent);
- this.getActivity().finish();
- }
- }
- @Override
- public void onClick(View view) {
- switch(view.getId()) {
- case R.id.bluetooth_button_scan : {
- this.startDiscovery();
- this.buttonScan.setVisibility(View.GONE);
- } break;
- }
- }
- private void init() {
- this.initLanguage();
- this.bluetoothBroadcastReceiver = new BluetoothBroadcastReceiver();
- IntentFilter filter = new IntentFilter();
- filter.addAction(BluetoothDevice.ACTION_FOUND);
- filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
- filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
- this.getActivity().registerReceiver(this.bluetoothBroadcastReceiver, filter);
- this.bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
- this.newDevices = new HashSet<String>();
- this.pairedDevices = this.bluetoothAdapter.getBondedDevices();
- if(this.pairedDevices != null && !this.pairedDevices.isEmpty()) {
- this.textViewPairedDevices.setVisibility(View.VISIBLE);
- for(BluetoothDevice bluetoothDevice : this.pairedDevices) {
- this.adapterPairedDevices.add(bluetoothDevice.getName() + "\n" + bluetoothDevice.getAddress());
- }
- } else {
- this.adapterPairedDevices.add(this.getResources().getText(R.string.text_no_paired_devices).toString());
- }
- }
- private void initLanguage() {
- if(this.language == Globals.ENGLISH) {
- this.textViewPairedDevices.setText(this.getResources().getString(R.string.text_paired_devices));
- this.textViewNewDevices.setText(this.getResources().getString(R.string.text_new_devices));
- this.buttonScan.setText(this.getResources().getString(R.string.text_scan));
- } else if(this.language == Globals.GERMAN) {
- this.textViewPairedDevices.setText(this.getResources().getString(R.string.text_paired_devices_de));
- this.textViewNewDevices.setText(this.getResources().getString(R.string.text_new_devices_de));
- this.buttonScan.setText(this.getResources().getString(R.string.text_scan_de));
- } else if(this.language == Globals.CHINESE) {
- this.textViewPairedDevices.setText(this.getResources().getString(R.string.text_paired_devices_cn));
- this.textViewNewDevices.setText(this.getResources().getString(R.string.text_new_devices_cn));
- this.buttonScan.setText(this.getResources().getString(R.string.text_scan_cn));
- }
- }
- private void startDiscovery() {
- this.adapterNewDevices.clear();
- this.newDevices.clear();
- this.getActivity().setProgressBarIndeterminateVisibility(true);
- this.getActivity().setTitle(this.getStringScanning());
- this.textViewNewDevices.setVisibility(View.VISIBLE);
- if (this.bluetoothAdapter.isDiscovering()) {
- this.bluetoothAdapter.cancelDiscovery();
- }
- this.bluetoothAdapter.startDiscovery();
- }
- private String getStringScanning() {
- if(this.language == Globals.ENGLISH) {
- return this.getResources().getString(R.string.text_scanning);
- } else if(this.language == Globals.GERMAN) {
- return this.getResources().getString(R.string.text_scanning_de);
- } else if(this.language == Globals.CHINESE) {
- return this.getResources().getString(R.string.text_scanning_cn);
- } else {
- return this.getResources().getString(R.string.text_scanning);
- }
- }
- private String getStringSelect() {
- if(this.language == Globals.ENGLISH) {
- return this.getResources().getString(R.string.text_select_device);
- } else if(this.language == Globals.GERMAN) {
- return this.getResources().getString(R.string.text_select_device_de);
- } else if(this.language == Globals.CHINESE) {
- return this.getResources().getString(R.string.text_select_device_cn);
- } else {
- return this.getResources().getString(R.string.text_select_device);
- }
- }
- private String getStringNoDevices() {
- if(this.language == Globals.ENGLISH) {
- return this.getResources().getString(R.string.text_no_devices);
- } else if(this.language == Globals.GERMAN) {
- return this.getResources().getString(R.string.text_no_devices_de);
- } else if(this.language == Globals.CHINESE) {
- return this.getResources().getString(R.string.text_no_devices_cn);
- } else {
- return this.getResources().getString(R.string.text_no_devices);
- }
- }
- private class BluetoothBroadcastReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
- if (bluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) {
- getActivity().finish();
- }
- } else if(action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)){
- getActivity().setProgressBarIndeterminateVisibility(false);
- getActivity().setTitle(getStringSelect());
- if (newDevices.isEmpty()) {
- adapterNewDevices.clear();
- adapterNewDevices.add(getStringNoDevices());
- }
- buttonScan.setVisibility(View.VISIBLE);
- } else if(action.equals(BluetoothDevice.ACTION_FOUND)) {
- BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
- if (bluetoothDevice != null) {
- String address = bluetoothDevice.getAddress();
- if (!newDevices.contains(address)) {
- newDevices.add(address);
- adapterNewDevices.add(bluetoothDevice.getName() + "\n" + bluetoothDevice.getAddress());
- }
- } else {}
- }
- }
- };
- }
Advertisement
Add Comment
Please, Sign In to add comment