Я пытаюсь сделать простое приложение для потокового видео.Изображение захватывается на сервере и сохраняется в формате PNG, которое преобразуется в байты и отправляется через Интернет (или локальную сеть) в приложение Android, которое сохраняет байты в формате PNG и отображается на дисплее.Я все время получаю сообщение об ошибке: «1001 *
D/skia: ------ png error IDAT: CRC error
D/skia: --- codec->getAndroidPixels() failed.
Я не могу найти нигде, что дает информацию об ошибке.Есть идеи?Помощь очень ценится.
public class MainActivity extends AppCompatActivity {
public static volatile ImageView mainView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
public void startStream(View v){
mainView = findViewById(R.id.imageView);
Thread stream = new Thread(new streamThread(this));
stream.start();
}
}
class streamThread implements Runnable{
Activity act;
public streamThread(Activity activity){
act = activity;
}
@Override
public void run() {
try {
Socket sock = new Socket("10.1.10.107", 6879);
InputStream sockIn = sock.getInputStream();
TimeUnit.SECONDS.sleep(1);
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(act.getFilesDir() + "/tempImg.png"));
while(true){
byte[] rData = new byte[2332800];
sockIn.read(rData);
bos.write(rData);
act.runOnUiThread(new Runnable() //run on ui thread
{
public void run()
{
MainActivity.mainView.setImageBitmap(BitmapFactory.decodeFile(act.getFilesDir() + "/tempImg.png"));
}
});
}
}catch(Exception e){
Log.e("exception", e.getMessage());
}
}
}