Android/C#Socket-1帧后解码/编码String64错误(几乎完成)
我创建了一个C#服务器,它通过套接字向android客户端发送位图。该位图不断更新,因为它是一个视频源 服务器C# 客户端AndroidAndroid/C#Socket-1帧后解码/编码String64错误(几乎完成),c#,android,sockets,bitmap,C#,Android,Sockets,Bitmap,我创建了一个C#服务器,它通过套接字向android客户端发送位图。该位图不断更新,因为它是一个视频源 服务器C# 客户端Android @Override protected Void doInBackground(Void... arg0) { Socket socket = null; try { socket = new Socket(dstAddress, dstPort); Scanner
@Override
protected Void doInBackground(Void... arg0) {
Socket socket = null;
try {
socket = new Socket(dstAddress, dstPort);
Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));
while(true) {
valores[26] = r.nextLine();
publishProgress(valores[26]);
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
byte[] decodedString = Base64.decode(values[26],Base64.NO_WRAP);
Bitmap master_bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
master_frame.setImageBitmap(master_bitmap);
}
发送第一帧,Android客户端将正确显示该帧。但当下一帧到来时,Android客户端崩溃
错误:
进程:com.example.tiago.java\u android,PID:826
java.lang.IllegalArgumentException:错误的base-64
位于android.util.Base64.decode(Base64.java:161)
位于android.util.Base64.decode(Base64.java:136)
位于android.util.Base64.decode(Base64.java:118)
在com.example.tiago.java_android.Cliente.onProgressUpdate(Cliente.java:228)上
在com.example.tiago.java_android.Cliente.onProgressUpdate(Cliente.java:28)上
在android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:656)上
位于android.os.Handler.dispatchMessage(Handler.java:102)
位于android.os.Looper.loop(Looper.java:135)
位于android.app.ActivityThread.main(ActivityThread.java:5431)
位于java.lang.reflect.Method.invoke(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:372)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:914)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:707)
我认为valores[26]的数据被破坏了,但事实并非如此。我得到的数据是正确的
我过去经常检查数据是否正确
有什么想法吗?
发送第一帧,Android客户端会正确显示它。但当下一帧到来时,Android客户端崩溃。
。那你以前为什么不告诉我?你怎么可能现在用另一个名字发帖呢?您有两个帐户?如果捕获到IllegalArgumentException
,则您的应用程序不会崩溃。OutOfMemoryError
。你在问什么?设备内存不足,无法生成位图。我将删除编辑。因为这不是问题所在。问题是第一个错误。`String[]safe=values[26]。拆分(“”;`为什么?没有任何意义。现在,您已经在Android中尝试了所有类型的解码,现在您可以在C#中尝试不同的编码。发送第一帧,Android客户端将正确显示它。但当下一帧到来时,Android客户端崩溃。
。那你以前为什么不告诉我?你怎么可能现在用另一个名字发帖呢?您有两个帐户?如果捕获到IllegalArgumentException
,则您的应用程序不会崩溃。OutOfMemoryError
。你在问什么?设备内存不足,无法生成位图。我将删除编辑。因为这不是问题所在。问题是第一个错误。`String[]safe=values[26]。拆分(“”;`为什么?没有任何意义。既然你在安卓系统中尝试了各种解码,那么现在你可以尝试用C#进行不同的编码了。
@Override
protected Void doInBackground(Void... arg0) {
Socket socket = null;
try {
socket = new Socket(dstAddress, dstPort);
Scanner r = new Scanner(new InputStreamReader(socket.getInputStream()));
while(true) {
valores[26] = r.nextLine();
publishProgress(valores[26]);
}
return null;
}
@Override
protected void onProgressUpdate(String... values) {
byte[] decodedString = Base64.decode(values[26],Base64.NO_WRAP);
Bitmap master_bitmap = BitmapFactory.decodeByteArray(decodedString,0,decodedString.length);
master_frame.setImageBitmap(master_bitmap);
}