Guest User

Untitled

a guest
Feb 16th, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.77 KB | None | 0 0
  1. import java.util.HashSet;
  2. import java.util.Set;
  3.  
  4. import android.app.Activity;
  5. import android.bluetooth.BluetoothAdapter;
  6. import android.bluetooth.BluetoothDevice;
  7. import android.content.BroadcastReceiver;
  8. import android.content.Context;
  9. import android.content.Intent;
  10. import android.content.IntentFilter;
  11. import android.os.Bundle;
  12. import android.view.LayoutInflater;
  13. import android.view.View;
  14. import android.view.View.OnClickListener;
  15. import android.view.ViewGroup;
  16. import android.widget.AdapterView;
  17. import android.widget.AdapterView.OnItemClickListener;
  18. import android.widget.ArrayAdapter;
  19. import android.widget.Button;
  20. import android.widget.ListView;
  21. import android.widget.TextView;
  22.  
  23. public class BluetoothFragment extends BaseFragment implements OnItemClickListener, OnClickListener {
  24.     private int language = 0;
  25.     private TextView textViewPairedDevices = null;
  26.     private ListView listViewPairedDevices = null;
  27.     private ArrayAdapter<String> adapterPairedDevices = null;
  28.     private TextView textViewNewDevices = null;
  29.     private ListView listViewNewDevices = null;
  30.     private ArrayAdapter<String> adapterNewDevices = null;
  31.     private Button buttonScan = null;
  32.     private BluetoothBroadcastReceiver bluetoothBroadcastReceiver = null;
  33.     private BluetoothAdapter bluetoothAdapter = null;
  34.     private Set<BluetoothDevice> pairedDevices = null;
  35.     private Set<String> newDevices = null;
  36.  
  37.     @Override
  38.     public void onCreate(Bundle savedInstanceState) {
  39.         super.onCreate(savedInstanceState);
  40.        
  41.         Bundle extras = this.getActivity().getIntent().getExtras();
  42.        
  43.         if(extras != null) {
  44.             this.language = extras.getInt(Globals.KEY_LANGUAGE);
  45.         }
  46.     }
  47.    
  48.     @Override
  49.     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  50.         return inflater.inflate(R.layout.activity_bluetooth_fragment, container, false);
  51.     }
  52.  
  53.     @Override
  54.     public void onViewCreated(View view, Bundle savedInstanceState) {
  55.         super.onViewCreated(view, savedInstanceState);
  56.        
  57.         this.getActivity().setResult(Activity.RESULT_CANCELED);
  58.        
  59.         this.adapterPairedDevices = new ArrayAdapter<String>(this.getActivity(), R.layout.activity_bluetooth_fragment_device);
  60.         this.adapterNewDevices = new ArrayAdapter<String>(this.getActivity(), R.layout.activity_bluetooth_fragment_device);
  61.        
  62.         this.textViewPairedDevices = (TextView) view.findViewById(R.id.bluetooth_textview_paired_devices);
  63.         this.textViewNewDevices = (TextView) view.findViewById(R.id.bluetooth_textview_new_devices);
  64.         this.listViewPairedDevices = (ListView) view.findViewById(R.id.bluetooth_listview_paired_devices);
  65.         this.listViewPairedDevices.setAdapter(this.adapterPairedDevices);
  66.         this.listViewPairedDevices.setOnItemClickListener(this);
  67.         this.listViewNewDevices = (ListView) view.findViewById(R.id.bluetooth_listview_new_devices);
  68.         this.listViewNewDevices.setAdapter(this.adapterNewDevices);
  69.         this.listViewNewDevices.setOnItemClickListener(this);
  70.         this.buttonScan = (Button) view.findViewById(R.id.bluetooth_button_scan);
  71.         this.buttonScan.setOnClickListener(this);
  72.     }
  73.    
  74.     @Override
  75.     public void onResume() {
  76.         super.onResume();
  77.        
  78.         this.init();
  79.        
  80.         if (this.bluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) {
  81.             this.getActivity().finish();
  82.         }
  83.     }
  84.    
  85.     @Override
  86.     public void onPause() {
  87.         super.onPause();
  88.        
  89.         if (this.bluetoothAdapter != null) {
  90.             this.bluetoothAdapter.cancelDiscovery();
  91.         }
  92.        
  93.         this.getActivity().unregisterReceiver(this.bluetoothBroadcastReceiver);
  94.     }
  95.    
  96.     @Override
  97.     public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
  98.         this.bluetoothAdapter.cancelDiscovery();
  99.  
  100.         String info = ((TextView) view).getText().toString();
  101.        
  102.         if (info != null) {
  103.             String[] infos = info.split("\n");
  104.             String name= infos[0];
  105.             String address = infos[1];
  106.            
  107.             Intent intent = new Intent();
  108.             intent.putExtra(Globals.EXTRA_DEVICE_NAME, name);
  109.             intent.putExtra(Globals.EXTRA_DEVICE_ADDRESS, address);
  110.            
  111.             this.getActivity().setResult(Activity.RESULT_OK, intent);
  112.             this.getActivity().finish();
  113.         }
  114.     }
  115.  
  116.     @Override
  117.     public void onClick(View view) {
  118.         switch(view.getId()) {
  119.         case R.id.bluetooth_button_scan : {
  120.             this.startDiscovery();
  121.             this.buttonScan.setVisibility(View.GONE);
  122.         } break;
  123.         }
  124.     }
  125.    
  126.     private void init() {
  127.         this.initLanguage();
  128.        
  129.         this.bluetoothBroadcastReceiver = new BluetoothBroadcastReceiver();
  130.        
  131.         IntentFilter filter = new IntentFilter();
  132.         filter.addAction(BluetoothDevice.ACTION_FOUND);
  133.         filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
  134.         filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
  135.        
  136.         this.getActivity().registerReceiver(this.bluetoothBroadcastReceiver, filter);
  137.        
  138.         this.bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
  139.         this.newDevices = new HashSet<String>();
  140.         this.pairedDevices = this.bluetoothAdapter.getBondedDevices();
  141.        
  142.         if(this.pairedDevices != null && !this.pairedDevices.isEmpty()) {
  143.             this.textViewPairedDevices.setVisibility(View.VISIBLE);
  144.            
  145.             for(BluetoothDevice bluetoothDevice : this.pairedDevices) {
  146.                 this.adapterPairedDevices.add(bluetoothDevice.getName() + "\n" + bluetoothDevice.getAddress());
  147.             }
  148.         } else {
  149.             this.adapterPairedDevices.add(this.getResources().getText(R.string.text_no_paired_devices).toString());
  150.         }
  151.     }
  152.  
  153.     private void initLanguage() {
  154.         if(this.language == Globals.ENGLISH) {
  155.             this.textViewPairedDevices.setText(this.getResources().getString(R.string.text_paired_devices));
  156.             this.textViewNewDevices.setText(this.getResources().getString(R.string.text_new_devices));
  157.             this.buttonScan.setText(this.getResources().getString(R.string.text_scan));
  158.         } else if(this.language == Globals.GERMAN) {
  159.             this.textViewPairedDevices.setText(this.getResources().getString(R.string.text_paired_devices_de));
  160.             this.textViewNewDevices.setText(this.getResources().getString(R.string.text_new_devices_de));
  161.             this.buttonScan.setText(this.getResources().getString(R.string.text_scan_de));
  162.         } else if(this.language == Globals.CHINESE) {
  163.             this.textViewPairedDevices.setText(this.getResources().getString(R.string.text_paired_devices_cn));
  164.             this.textViewNewDevices.setText(this.getResources().getString(R.string.text_new_devices_cn));
  165.             this.buttonScan.setText(this.getResources().getString(R.string.text_scan_cn));
  166.         }
  167.     }
  168.    
  169.     private void startDiscovery() {
  170.         this.adapterNewDevices.clear();
  171.         this.newDevices.clear();
  172.  
  173.         this.getActivity().setProgressBarIndeterminateVisibility(true);
  174.         this.getActivity().setTitle(this.getStringScanning());
  175.         this.textViewNewDevices.setVisibility(View.VISIBLE);
  176.  
  177.         if (this.bluetoothAdapter.isDiscovering()) {
  178.             this.bluetoothAdapter.cancelDiscovery();
  179.         }
  180.  
  181.         this.bluetoothAdapter.startDiscovery();
  182.     }
  183.    
  184.     private String getStringScanning() {
  185.         if(this.language == Globals.ENGLISH) {
  186.             return this.getResources().getString(R.string.text_scanning);
  187.         } else if(this.language == Globals.GERMAN) {
  188.             return this.getResources().getString(R.string.text_scanning_de);
  189.         } else if(this.language == Globals.CHINESE) {
  190.             return this.getResources().getString(R.string.text_scanning_cn);
  191.         } else {
  192.             return this.getResources().getString(R.string.text_scanning);
  193.         }
  194.     }
  195.    
  196.     private String getStringSelect() {
  197.         if(this.language == Globals.ENGLISH) {
  198.             return this.getResources().getString(R.string.text_select_device);
  199.         } else if(this.language == Globals.GERMAN) {
  200.             return this.getResources().getString(R.string.text_select_device_de);
  201.         } else if(this.language == Globals.CHINESE) {
  202.             return this.getResources().getString(R.string.text_select_device_cn);
  203.         } else {
  204.             return this.getResources().getString(R.string.text_select_device);
  205.         }
  206.     }
  207.    
  208.     private String getStringNoDevices() {
  209.         if(this.language == Globals.ENGLISH) {
  210.             return this.getResources().getString(R.string.text_no_devices);
  211.         } else if(this.language == Globals.GERMAN) {
  212.             return this.getResources().getString(R.string.text_no_devices_de);
  213.         } else if(this.language == Globals.CHINESE) {
  214.             return this.getResources().getString(R.string.text_no_devices_cn);
  215.         } else {
  216.             return this.getResources().getString(R.string.text_no_devices);
  217.         }
  218.     }
  219.    
  220.     private class BluetoothBroadcastReceiver extends BroadcastReceiver {
  221.  
  222.         @Override
  223.         public void onReceive(Context context, Intent intent) {
  224.             String action = intent.getAction();
  225.  
  226.             if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
  227.                 if (bluetoothAdapter.getState() == BluetoothAdapter.STATE_OFF) {
  228.                     getActivity().finish();
  229.                 }
  230.             } else if(action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)){
  231.                 getActivity().setProgressBarIndeterminateVisibility(false);
  232.                 getActivity().setTitle(getStringSelect());
  233.                
  234.                 if (newDevices.isEmpty()) {
  235.                     adapterNewDevices.clear();
  236.                     adapterNewDevices.add(getStringNoDevices());
  237.                 }
  238.                
  239.                 buttonScan.setVisibility(View.VISIBLE);
  240.             } else if(action.equals(BluetoothDevice.ACTION_FOUND)) {
  241.                 BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
  242.                
  243.                 if (bluetoothDevice != null) {
  244.                     String address = bluetoothDevice.getAddress();
  245.                    
  246.                     if (!newDevices.contains(address)) {
  247.                         newDevices.add(address);
  248.                         adapterNewDevices.add(bluetoothDevice.getName() + "\n" + bluetoothDevice.getAddress());
  249.                     }
  250.                 } else {}
  251.             }
  252.         }
  253.     };  
  254. }
Advertisement
Add Comment
Please, Sign In to add comment