私は自分のラップトップ画面のスクリーンショットを連続的に取得し、それを私のアンドロイドアプリに転送するアプリケーションを構築していますが、whileループ内にいくつかの問題があります。それが無限になるまで、または無限ループに置き換えて、私のコードがすべてのスレッドを停止させ、アプリケーションのクラッシュのためにメモリ割り当ての問題が発生した場合は、コードを無限に実行して、スクリーンショットが表示されるようにしてください。すべてのスレッドが中断されます
ありがとうございます。ここで
は私のコードm0skit0 @
public class ScreenActivity extends AppCompatActivity {
ImageView img;
int width,height;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_screen);
img=(ImageView)findViewById(R.id.imageView);
Display display = getWindowManager().getDefaultDisplay();
width = display.getWidth();
height = display.getHeight();
// while (true)
for (int i=0;i<100;i++)
new GetImg().execute();
}
Bitmap imgscr;
public class GetImg extends AsyncTask<Object,Void,Bitmap> {
@Override
protected Bitmap doInBackground(Object[] params) {
Socket client= null;
try {
client = new Socket("192.168.1.5",6767);
InputStream in=client.getInputStream();
imgscr=Bitmap.createScaledBitmap(BitmapFactory.decodeStream(in), width, height, false);
} catch (Exception e) {
e.printStackTrace();
}
return imgscr;
}
@Override
protected void onPostExecute(Bitmap bm)
{
img.setImageBitmap(bm);
}
}
}
次のようになります。ループを 'onCreate'から移動してください。また、バックグラウンドで実行される100(または無限)のAsyncTasksを起動しているため、同時にすべてのイメージを設定していることにも注意してください。これはあなたがしたいことですか?私はあなたが同じImageViewを上書きしているので、イメージを次々と撮りたいと思うでしょう。 – m0skit0