On Wednesday, January 16, 2013 10:05:19 AM UTC-6, Antonis Kanaris wrote:
--
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
inio.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.createRfcommSocketToServiceRec ord(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+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
No comments:
Post a Comment