Dudule100
Messages postés550Date d'inscriptionjeudi 25 octobre 2012StatutMembreDernière intervention22 janvier 2017
-
Modifié par Dudule100 le 16/05/2016 à 16:29
Bonjour,
Voila, je suis en train de développer une application pour android pour diriger une caméra a distance avec le bluetooth mais j'ai un problème. Mon code est fini et bon mais processing me met toujours une erreur alors qu'il n'y en a pas (a mes yeux).
Voila mon code :
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import java.io.IOException;
import java.io.OutputStream;
import java.util.UUID;
import android.util.Log;
import apwidgets.APWidgetContainer;
import apwidgets.APButton;
import apwidgets.APWidget;
import apwidgets.OnClickWidgetListener;
public int[] bg={0,80,0};
public BluetoothDevice btShield = null;
public BluetoothSocket btSocket = null;
public OutputStream btOutputStream = null;
public APWidgetContainer widgetContainer = null;
public Connect2BtDevice ConBTdevice = new Connect2BtDevice();
// Declaration buttons
String[] buttonText = { "Haut", "Bas", "Gauche", "Droite"};
String[] sendLetter={"h","b","g","d"};
int n= buttonText.length;
int[][] buttonColour = { {255,10,10}, {10,255,10}, {10,10,255}, {0,0,0} };
APButton[] guiBtns = new APButton[n];
int gap=10;
int buttonWidth=0;
int buttonHeight=0;
// App Init (Drawing / Connection / ...)
void setup()
{
new Thread(ConBTdevice).start(); //Init Connect Bluetooth-Slave device
orientation(LANDSCAPE); //Make GUI (landscape mode)
// Setup button
widgetContainer = new APWidgetContainer(this);
buttonWidth=((width/n)-(n*(gap/2))); //button width (depends screen width)
buttonHeight=(height/2); //button height (depends screen height)
// Add ALL buttons in widgetContainer.
for(int i=0; i<n;i++)
{
guiBtns[i]= new APButton(((buttonWidth*i)+(gap*(i+1))), gap, buttonWidth, buttonHeight, buttonText[i]);
widgetContainer.addWidget(guiBtns[i]);
}
}
//Change background phone
void draw()
{
background(bg[0],bg[1],bg[2]);
}
// Click Button
void onClickWidget(APWidget widget)
{
String letrToSend="";
// Identify pressed button
for(int i= 0; i < n; i ++)
{
if(widget == guiBtns[i])
{
ConBTdevice.changeBackground(buttonColour[i][0], buttonColour[i][1], buttonColour[i][2]);
letrToSend = sendLetter[i];
}
}
/* Send the chosen letter to the Arduino/Bluetooth Shield */
if(ConBTdevice!=null)
{
ConBTdevice.write(letrToSend);
}
}
// Connect class Bluetooth/Arduino
public class Connect2BtDevice implements Runnable
{
BluetoothAdapter btAdapter = null;
BroadcastReceiver broadcastBtDevices = null;
private UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
// Init Connect Bluetooth
public Connect2BtDevice()
{
broadcastBtDevices = new btBroadcastReceiver();
getBtAdapter();
enableBtAdapter();
discoverBtDevices();
}
Context context;
// Register the broadcast receiver only
@Override
public void run()
{
context.registerReceiver(broadcastBtDevices, new IntentFilter(BluetoothDevice.ACTION_FOUND));
}
// Get Bluetooth adapter
void getBtAdapter()
{
btAdapter = BluetoothAdapter.getDefaultAdapter();
}
// Enable Bluetooth
void enableBtAdapter()
{
if (!btAdapter.isEnabled())
{
btAdapter.enable();
}
}
// Discover other Bluetooth devices
void discoverBtDevices()
{
while(!btAdapter.isEnabled())
{
//Wait (Bluetooth Adapter is enabled)
}
if (!btAdapter.isDiscovering())
{
btAdapter.startDiscovery();
}
}
// Connection
void connect2Bt()
{
try
{
btSocket = btShield.createRfcommSocketToServiceRecord(uuid);
changeBackground(255,255,0); //YELLOW Background
try
{
btSocket.connect();
while(btSocket == null)
{
//Nothing
}
try
{
btOutputStream = btSocket.getOutputStream();
changeBackground(0,255,0); //Green Background (Successful connection)
}
catch (IOException e)
{
Log.e("ConnectToBluetooth", "Error when getting output Stream");
}
}catch(IOException e)
{
Log.e("ConnectToBluetooth", "Error with Socket Connection");
changeBackground(255,0,0); //Red background
}
}catch(IOException e)
{
Log.e("ConnectToBluetooth", "Error with Socket Creation");
changeBackground(255,0,0); //Red background
try
{
btSocket.close(); //try to close the socket
}
catch(IOException closeException)
{
Log.e("ConnectToBluetooth", "Error Closing socket");
}return;
}
}
// Write string
public void write(String str)
{
try
{
btOutputStream.write(stringToBytes(str));
}
catch (IOException e)
{
Log.e("Writing to Stream", "Error when writing to btOutputStream");
}
}
public byte[] stringToBytes(String str)
{
char[] buffer = str.toCharArray();
byte[] b = new byte[buffer.length << 1];
for(int i = 0; i < buffer.length; i++)
{
int bpos = i << 1;
b[bpos] = (byte) ((buffer[i]&0xFF00)>>8);
b[bpos + 1] = (byte) (buffer[i]&0x00FF);
}
return b;
}
// Cancel / called to close the Bluetooth Socket
public void cancel()
{
try
{
btSocket.close();
}
catch (IOException e)
{
}
}
void changeBackground(int bg0, int bg1, int bg2)
{
bg[0] = bg0;
bg[1] = bg1;
bg[2] = bg2;
}
}
// Broadcasts / trigger bluetooth notif
public class btBroadcastReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
String action=intent.getAction();
/* Notification that BluetoothDevice is FOUND */
if(BluetoothDevice.ACTION_FOUND.equals(action))
{
/* Get the discovered device Name */
String discoveredDeviceName = intent.getStringExtra(BluetoothDevice.EXTRA_NAME);
/* If the discovered Bluetooth device Name =SeeedBTSlave then CONNECT */
if(discoveredDeviceName.equals("SeeedBTSlave"))
{
/* Get a handle on the discovered device */
btShield = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
/* Connect to the discovered device. */
ConBTdevice.connect2Bt();
}
}
}
}
Quand je l'exécute, j'ai se qui suit dans la console :
---------- 1. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android472854356632575730sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 32) import java.io.OutputStream; ^^^^^^^^^^^^^^^^^^^^ The import java.io.OutputStream is never used ---------- 2. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android472854356632575730sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 33) import java.io.IOException; ^^^^^^^^^^^^^^^^^^^ The import java.io.IOException is never used ---------- 3. ERROR in C:\Users\Dudule100\AppData\Local\Temp\android472854356632575730sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 141) public void run() ^^^^^ The method run() of type sketch_Bluetooth.Connect2BtDevice must override a superclass method ---------- 3 problems (1 error, 2 warnings)
BUILD FAILED C:\Users\DUDULE~1\AppData\Local\Temp\android472854356632575730sketch\build.xml:15: The following error occurred while executing this line: C:\Users\DUDULE~1\AppData\Local\Temp\android472854356632575730sketch\build.xml:28: Compile failed; see the compiler error output for details.
Total time: 1 second
Donc du coup j'ai essayer de mettre le @override en commentaire mais l'application se lance mais elle crash juste après que le bluetooth de mon téléphone est été activé.
Le code d'erreur afficher dans la console est alors :
---------- 1. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 4) import processing.data.*; ^^^^^^^^^^^^^^^ The import processing.data is never used ---------- 2. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 5) import processing.event.*; ^^^^^^^^^^^^^^^^ The import processing.event is never used ---------- 3. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 6) import processing.opengl.*; ^^^^^^^^^^^^^^^^^ The import processing.opengl is never used ---------- 4. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 22) import apwidgets.OnClickWidgetListener; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The import apwidgets.OnClickWidgetListener is never used ---------- 5. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 24) import apwidgets.*; ^^^^^^^^^ The import apwidgets is never used ---------- 6. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 26) import java.util.HashMap; ^^^^^^^^^^^^^^^^^ The import java.util.HashMap is never used ---------- 7. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 27) import java.util.ArrayList; ^^^^^^^^^^^^^^^^^^^ The import java.util.ArrayList is never used ---------- 8. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 28) import java.io.File; ^^^^^^^^^^^^ The import java.io.File is never used ---------- 9. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 29) import java.io.BufferedReader; ^^^^^^^^^^^^^^^^^^^^^^ The import java.io.BufferedReader is never used ---------- 10. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 30) import java.io.PrintWriter; ^^^^^^^^^^^^^^^^^^^ The import java.io.PrintWriter is never used ---------- 11. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 31) import java.io.InputStream; ^^^^^^^^^^^^^^^^^^^ The import java.io.InputStream is never used ---------- 12. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 32) import java.io.OutputStream; ^^^^^^^^^^^^^^^^^^^^ The import java.io.OutputStream is never used ---------- 13. WARNING in C:\Users\Dudule100\AppData\Local\Temp\android2883945872655118155sketch\src\processing\test\sketch_bluetooth\sketch_Bluetooth.java (at line 33) import java.io.IOException; ^^^^^^^^^^^^^^^^^^^ The import java.io.IOException is never used ---------- 13 problems (13 warnings)
java.lang.NullPointerException at processing.test.sketch_bluetooth.sketch_Bluetooth$Connect2BtDevice.run(sketch_Bluetooth.java:143) at java.lang.Thread.run(Thread.java:848)
Je ne sais plus quoi faire, j'en ai impérativement, c'est pour mon projet de fin d'année pour mon bac.