2016-12-22 2 views
0

Ich versuche, eine Zeichenfolge von meinem Android-Gerät an das andere Gerät zu senden. In meinem Code versuche ich Datum und Uhrzeit abzurufen und in einer Zeichenfolge zu speichern und dann diese Zeichenfolge über Bluetooth an das Gerät zu senden.Problem beim Senden einer Zeichenfolge von Android an ein anderes Gerät über Bluetooth

Das Problem ist, wenn ich die Zeichenfolge senden, einige seiner Zeichen fehlen, wenn sie von dem anderen Gerät empfangen werden.

mein Code:

private void time() { 
    int day = 0; 
    Date now = new Date(); 
    String sdf = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(now); 

    switch (sdf) { 

     case ("Monday"): 
      day = 1; 
      break; 
     case ("Tuesday"): 
      day = 2; 
      break; 
     case ("Wednesday"): 
      day = 3; 
      break; 
     case ("Thursday"): 
      day = 4; 
      break; 
     case ("Friday"): 
      day = 5; 
      break; 
     case ("Saturday"): 
      day = 6; 
      break; 
     case ("Sunday"): 
      day = 7; 
      break; 
    } 

    int mm = Calendar.getInstance().get(Calendar.MINUTE); 
    int HH = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); 
    int dd = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); 
    int MM = Calendar.getInstance().get(Calendar.MONTH) + 1; 
    int yy = Calendar.getInstance().get(Calendar.YEAR) % 100; 


     String time2 = "A"+mm+HH+"0"+day+dd+MM+yy+"B"; 
     sendMessage(time2); 
} 

ich meinen String senden durch den Aufruf nachrichts() Funktion, die unten angegeben ist.

Code:

private void sendMessage(String message) { 
    // Check that we're actually connected before trying anything 
    if (mChatService.getState() != 
      com.example.hasani.bluetoothterminal.BluetoothChatService.STATE_CONNECTED) { 
     Toast.makeText(getActivity(), R.string.not_connected, Toast.LENGTH_SHORT).show(); 
     mStartButton.setBackgroundResource(R.color.button_default); 
     mCalButton.setBackgroundResource(R.color.button_default); 
     mTestButton.setBackgroundResource(R.color.button_default); 
     mManButton.setBackgroundResource(R.color.button_default); 
     mAutoButton.setBackgroundResource(R.color.button_default); 
     return; 
    } 

    // Check that there's actually something to send 
    if (message.length() > 0) { 
     // Get the message bytes and tell the BluetoothChatService to write 
     byte[] send = message.getBytes(); 

     while (!mChatService.write(send)) 
     { 
      try{ 
       Thread.sleep(10); 
      } 
      catch (InterruptedException ex){ 
       //Log.d(TAG,"Interrupted Exception"); 
       //break; 
      } 
     } 

     // Reset out string buffer to zero and clear the edit text field 
     mOutStringBuffer.setLength(0); 
    } 
} 

Aber wenn ich meine Zeichenfolge als String t = „A000000000000B oder "A111111111111B"(Länge = 14) gesetzt, dann ist die Zeichenfolge, die von dem anderen Gerät empfangen wird, und ich kann bewegen weitere Operationen

Code:.

private void time() { 
    int day = 0; 
    Date now = new Date(); 
    String sdf = new SimpleDateFormat("EEEE", Locale.ENGLISH).format(now); 

    switch (sdf) { 

     case ("Monday"): 
      day = 1; 
      break; 
     case ("Tuesday"): 
      day = 2; 
      break; 
     case ("Wednesday"): 
      day = 3; 
      break; 
     case ("Thursday"): 
      day = 4; 
      break; 
     case ("Friday"): 
      day = 5; 
      break; 
     case ("Saturday"): 
      day = 6; 
      break; 
     case ("Sunday"): 
      day = 7; 
      break; 
    } 

    int mm = Calendar.getInstance().get(Calendar.MINUTE); 
    int HH = Calendar.getInstance().get(Calendar.HOUR_OF_DAY); 
    int dd = Calendar.getInstance().get(Calendar.DAY_OF_MONTH); 
    int MM = Calendar.getInstance().get(Calendar.MONTH) + 1; 
    int yy = Calendar.getInstance().get(Calendar.YEAR) % 100; 


     String time2 = "A000000000000B"; //*just to check out assigning this value*// 
     sendMessage(time2); 
} 

das heißt, wenn ich mit einer Länge = 14 Zeichenfolge wie "A000000000000B" sende, es wird akzeptiert, aber wenn auf Berechnung j. Genau wie ich oben, fehlen Werte von der Startposition der Zeichenfolge.

Bitte Hilfe! Vielen Dank!

Antwort

0

In String time2 = "A"+mm+HH+"0"+day+dd+MM+yy+"B"; sind alle Ihre Felder int was bedeutet, dass die dritte Minute als String '3' und nicht '03' ist.

Wenn Sie sich mit int bestehen, versuchen

String min = String.format("%02d", min); 

Oder nutzen Simple, die Sie früher verwendet, um den Tag der Woche zu bekommen.

Calendar cal = Calendar.getInstance(); 
SimpleDateFormat dateFormat = new SimpleDateFormat("mmHH"); 
dateFormat.setCalendar(cal); 
String mmHH = dateFormat.format(cal.getTime())); 
+1

Wenn meine Minute 15 angenommen wird, tritt das Problem immer noch auf. –

+0

@AkhilNair Sie sollten zeigen, wie spät es in Ihrem Absender ist und was Sie erhalten. –

+1

Angenommen, ich sende A150304221216B, dann erhalte ich 150304221216B. –

Verwandte Themen