我试图写示例Android应用程序,允许使用JavaOSC库发送和接收OSC消息。在这个例子中,我们发送的是一个简单的Android eekBar的当前值与OSC消息。
日志说:
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);
在许多android错误之间,日志显示:
09-03 07:56:00.794:E/AndroidRuntime(2408):致命异常:main 09-03 07:56:00.794:E/AndroidRuntime(2408):java。lang.NullPointerException 09-03 07:56:00.794:E/AndroidRuntime(2408):在com上。遥远的第二次测试。主要活动。sendMyOscMessage(MainActivity.java:132)09-03 07:56:00.794:E/AndroidRuntime(2408):在com上。遥远的第二次测试。主要活动。onProgressChanged(MainActivity.java:93)09-03 07:56:00.794:E/AndroidRuntime(2408):在android上。小装置。西格巴。onProgressRefresh(SeekBar.java:91)
您需要访问互联网的权限。
由于行号与您的错误不匹配,我不能确定,但我猜这是最常见的错误,导致“无法发送”。
我有1个活动和1个普通类,其中活动1接收消息,普通类发送消息。如何实施: 在活动一中。班 在Ordinary.class 如何发送空消息(1)的代码?
我试图发送OSC消息(打开声音控制)从vue原生(vue包装反应原生)应用程序直接到一个叫TouchDesigner的应用程序。 我现在已经解决了这个问题,我在Android系统上从客户端应用程序向一个节点服务器发送消息,在那里我以OSC的形式转发消息,我在Touchdesigner中接收到该消息。 我想知道有没有更好的方法?基本上,我想直接向Touchdesigner应用程序发送消息,该应用程序
通常在服务器发送一些数据时发生Message事件。服务器发送到客户端的消息可以包括纯文本消息,二进制数据或图像。无论何时发送数据,都会触发函数。 此事件充当客户端对服务器的耳朵。每当服务器发送数据时,都会触发事件。 以下代码段描述了打开Web Socket协议的连接。 还需要考虑使用Web套接字可以传输哪些类型的数据。Web套接字协议支持文本和二进制数据。就Javascript而言,文本指的是字符
null 谁能给我一个向RabbitMQ发送消息的标准程序的例子。我正在使用Spring Boot,也可以使用它的特性。
我的代码如下:, 从服务器通知FCM(C#) 我对上述要求的答复 {"multicast_id":5002368547300,"成功": 1,"失败": 0,"canonical_ids": 0,"结果":[{"message_id":"0:14200031 c4rrr5787蛋"}]} 我假设一旦FCM收到新的通知,它将把这些通知推送到各自的Android设备。 但对我来说,它不起作用。
我对Android系统是新手。我有一个客户端类,我的主要活动引用。client类将客户端套接字连接到充当服务器的外部设备,但是它从不将我试图发送的消息发送到服务器。我知道这不是连接,因为在创建套接字时,我将setKeepAlive()设置为true,当我试图发送消息时不会引发异常,socket.isconnected()返回true,如果我试图在发送消息之前连接套接字,它会引发“已经连接”的异常。