2013-09-03 2 views
1

Я пытаюсь написать пример приложения Android, который позволяет отправлять и получать сообщения OSC с использованием библиотеки JavaOSC. В этом примере мы отправляем текущее значение простого Android seekBar с сообщением OSC.отправлять/получать сообщения OSC на Android с JavaOSC

LogCat говорит:

09-03 04:56:25.695: I/System.out(1235): can not send 

Вот мой пример кода, к сожалению, она не работает (кажется, что у меня есть исключение при попытке отправить сообщение). Может быть, кто-то знает, что здесь не так? .

Я совершенно новый в Android разработчика, спасибо за все советы ...

package com.remote.secondtest; 

import java.io.IOException; 
import java.net.InetAddress; 
import java.net.SocketException; 
import java.net.UnknownHostException; 
import java.util.Date; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.SeekBar; 
import android.widget.SeekBar.OnSeekBarChangeListener; 
import android.widget.TextView; 





public class MainActivity extends Activity implements OnSeekBarChangeListener{ 

    private SeekBar myBar; 
    private TextView textProgress, textAction; 
    public OSCPortOut sender = null; 
    private OSCPortIn receiver; 
    public InetAddress targetIP; 
    int port = 5001; 
    protected int sliderValue; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.myscreen); 

     myBar = (SeekBar)findViewById(R.id.seekBar1); 
     myBar.setOnSeekBarChangeListener(this);   
     textProgress = (TextView)findViewById(R.id.textViewProgress); 
     textAction = (TextView)findViewById(R.id.textViewAction); 

    } 

    public void setConnection(){ 
     try { 
      targetIP = InetAddress.getByName("192.168.0.104"); 
      //targetIP = InetAddress.getLocalHost(); 
     } catch (UnknownHostException e) {   
      e.printStackTrace();  }   

     try { 
      sender = new OSCPortOut(targetIP, 4444); //------set up outgoing ------ 
     } catch (SocketException e) { 
      e.printStackTrace(); 
     } 

     /*try {          //------set up incoming------- 
      receiver = new OSCPortIn(4444); 
     } catch (SocketException e) { 
      e.printStackTrace(); 
     } */ 

    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 


    @Override 
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
     textProgress.setText("The value is: " + progress); 
     textAction.setText("changing"); 

     sliderValue = progress; 
     sendMyOscMessage(); 
     //receiveMyOscMessage(); 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) {  
     textAction.setText("starting to track touch"); 

    } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { 
     seekBar.setSecondaryProgress(seekBar.getProgress()); 
     textAction.setText("ended tracking touch");  

    } 

    public void sendMyOscMessage(){ 
     Object args [] = new Object[2]; 
     args[0] = "Current_Value_is: "; 
     args[1] = sliderValue; 
     OSCMessage msg = new OSCMessage("/test_from_device", args); 

     try { 
      sender.send(msg); 
      System.out.println("OSC message sent!"); 
      System.out.println(args[0].toString() + args[1]); 
     } catch (Exception e) { 
      System.out.println("can not send"); 
      //e.printStackTrace(); 
     } 

    } 

    /*public void receiveMyOscMessage(){ 
     OSCListener myListener = new OSCListener() { 

      @Override 
      public void acceptMessage(Date time, OSCMessage message) { 

       System.out.println("myMessage_received!");    
       //Object [] args = message.getArguments(); 
       //String myTitle = args[0].toString(); 
       //int currentValue = (Integer)args[1]; 
      } 
     }; 

     receiver.addListener("/test_to_device", myListener); 
     receiver.startListening(); 

    }*/ 


} 

UPD: конструктор OSCMessage осуждались, но после того, как я изменил его для правильного конструктора нет никаких изменений .. .

OSCMessage msg = new OSCMessage(); 
    msg.setAddress("192.168.0.104"); 
    msg.addArgument(args); 

Между много андроида ошибок журнала говорит:

09-03 07: 56: 00,794: E/AndroidRuntime (2408): FATAL ИСКЛЮЧЕНИЕ: main 09-03 07: 56: 00.794: E/AndroidRuntime (2408): java.lang.NullPointerException 09-03 07: 56: 00.794: E/AndroidRuntime (2408): at com.remote.secondtest.MainActivity .sendMyOscMessage (MainActivity.java:132) 09-03 07: 56: 00.794: E/AndroidRuntime (2408): at com.remote.secondtest.MainActivity.onProgressChanged (MainActivity.java:93) 09-03 07:56 : 00,794: E/AndroidRuntime (2408): в android.widget.SeekBar.onProgressRefresh (SeekBar.java:91)

+0

Ошибка содержит номера строк, которые не соответствуют введенному вами коду. Какую версию JavaOSC вы используете? – hoijui

ответ

0

Вам необходимо разрешение на доступ к Интернету.

Поскольку номера строк не совпадают с вашими ошибками я не могу быть уверен, но я предполагаю, что это самая распространенная ошибка, что приводит к «не может отправить».

Смежные вопросы