I created an application with bluetooth, but when bluetooth is closed i put enable request for open bt but apk crashing,close after show toast request for user and must restart the apk and I have this error... * java.lang.NullPointerException* in *io.webbt.Activity2.openBT.Any idea?I must use OnResume OnActivityResult?How i fix it?*
* public class Activity2 extends Activity { public String strValue; public String strValue2; public String strUrlup; public String strValued ="http://"; public String strValue2d ="HC-07"; public String strValue3d=""; public String data="0";//Temperature (data from arduino) public boolean killMe = false; TextView temptext,txt,myLabel,text,text2,text3,text4; Handler handler = new Handler(); BluetoothAdapter mBluetoothAdapter; BluetoothSocket mmSocket; BluetoothDevice mmDevice; OutputStream mmOutputStream; InputStream mmInputStream; Thread workerThread; byte[] readBuffer; int readBufferPosition; int counter; volatile boolean stopWorker; boolean work = true; private static final int REQUEST_ENABLE_BT = 1; public long refreshtime = 30000;//replay download/upload time 30 secs /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity2); myLabel = (TextView)findViewById(R.id.label); temptext = (TextView)findViewById(R.id.temptxt); SharedPreferences preferences = getSharedPreferences("dataioweb" , MODE_PRIVATE); strValue = preferences.getString("Url",strValued); text = (TextView) findViewById(R.id.txt1); text.setText(strValue); strValue2 = preferences.getString("DevName",strValue2d); text2 = (TextView) findViewById(R.id.txt2); text2.setText(strValue2); strUrlup = preferences.getString("Urlup",strValue3d); text4 = (TextView) findViewById(R.id.txt4); text4.setText(strUrlup); //findBT(); } private class DownloadWebPageTask extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) { String response = ""; for (String url : urls) { DefaultHttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(url); try { HttpResponse execute = client.execute(httpGet); InputStream content = execute.getEntity().getContent(); BufferedReader buffer = new BufferedReader(new InputStreamReader(content)); String s = ""; while ((s = buffer.readLine()) != null) { response += s; } } catch (Exception e) { e.printStackTrace(); } } return response; } @Override protected void onPostExecute(String result) { TextView text3 = (TextView) findViewById(R.id.txt3); text3.setText(result); try { sendData(result); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } protected void onStart() { super.onStart(); try { findBT(); openBT(); } catch (IOException ex) { } runnable.run(); } protected void onResume() { super.onResume(); } private Runnable runnable = new Runnable() { public void run() { if(killMe) return; DownloadWebPageTask task = new DownloadWebPageTask(); task.execute(new String[] { strValue });//Download data on/off beginListenForData();//Listen Bluetooth temperature SimpleHttpPut task2 = new SimpleHttpPut(); task2.execute(new String[] { strUrlup,data });//Upload data class handler.postDelayed(this, refreshtime);//Refresh page time } }; void findBT() { mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if(mBluetoothAdapter == null) { myLabel.setText("No bluetooth adapter available"); } if(!mBluetoothAdapter.isEnabled()) { Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBluetooth, REQUEST_ENABLE_BT); //mBluetoothAdapter.enable(); } Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices(); if(pairedDevices.size() > 0) { for(BluetoothDevice device : pairedDevices) { if(device.getName().equals(strValue2)) { mmDevice = device; break; } } } myLabel.setText("Bluetooth Device Found"); } void openBT() throws IOException { UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb"); //Standard SerialPortService ID mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid); mmSocket.connect(); mmOutputStream = mmSocket.getOutputStream(); mmInputStream = mmSocket.getInputStream(); myLabel.setText("Bluetooth Opened"); } void sendData(String msg) throws IOException { msg += "\n"; mmOutputStream.write(msg.getBytes()); myLabel.setText("Data Sent"); } void beginListenForData() { final Handler handler = new Handler(); final byte delimiter = 10; //This is the ASCII code for a newline character stopWorker = false; readBufferPosition = 0; readBuffer = new byte[1024]; workerThread = new Thread(new Runnable() { public void run() { while(!Thread.currentThread().isInterrupted() && !stopWorker) { try { int bytesAvailable = mmInputStream.available(); if(bytesAvailable > 0) { byte[] packetBytes = new byte[bytesAvailable]; mmInputStream.read(packetBytes); for(int i=0;i<bytesAvailable;i++) { byte b = packetBytes[i]; if(b == delimiter) { byte[] encodedBytes = new byte[readBufferPosition]; System.arraycopy(readBuffer, 0, encodedBytes, 0, encodedBytes.length); //final String data = new String(encodedBytes, "US-ASCII"); data = new String(encodedBytes, "US-ASCII"); readBufferPosition = 0; handler.post(new Runnable() { public void run() { temptext.setText(data); } }); } else { readBuffer[readBufferPosition++] = b; } } } } catch (IOException ex) { stopWorker = true; } } } }); workerThread.start(); } public void Setup(View view) throws IOException { killMe = true; work=false; stopWorker = true; mmOutputStream.close(); mmInputStream.close(); mmSocket.close(); //mBluetoothAdapter.disable(); myLabel.setText("Bluetooth Closed"); Intent intent = new Intent(); setResult(RESULT_OK, intent); finish(); } protected void onStop() { super.onStop(); killMe = true; work=false; stopWorker = true; try { mmOutputStream.close(); mmInputStream.close(); mmSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } mBluetoothAdapter.disable(); myLabel.setText("Bluetooth Closed"); finish(); } @Override protected void onDestroy() {//android has killed this activity //Log.d(logtag,"onDestroy() called"); super.onDestroy(); mBluetoothAdapter.disable(); try { mmOutputStream.close(); mmInputStream.close(); mmSocket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } killMe = true; finish(); } } * -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en