いくつかのURLを呼び出すだけで、いくつかのネットワークIPカメラのパラメーターを設定するコードがあります。URLは(簡略化するために)この形式「http://mydomain.com:portnumber/setalarm.cgi」であり、通常のHttpGet / HttpResponseメカニズムを使用してURLを呼び出し、結果ステータス(良い場合は200、悪い場合はその他)を取得します。 )。さて、呼び出されるURLは8以上なので、順番に(forループを使用)、進行状況バー(または単純な進行状況インジケーター)を表示して、さまざまなURL呼び出しが実行されていることをユーザーに知らせたいと思います。8つの呼び出しがすべて完了したら、新しいActityを結果とともに表示したいと思います(OK、またはKOカムのリストを含むKO)。
私はこのサイトで見つけた多くの解決策を試しましたが、成功したものはありません(スレッド、プログレスバー、ダイアログバー、非同期タスクなど)。例外が発生するか、バーが表示されないか、プロセスが完了する前に新しいアクティビティが表示されます。
誰か助けてもらえますか?これは私のコードの関連部分です:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlayout);
// ON button
Button myButton1 = (Button) findViewById (R.id.button1);
myButton1.setOnClickListener(new OnClickListener() {
public void onClick(final View arg0) {
intGoodCamera = 0;
intBadCamera = 0;
for (int i = 0; i<intNumCam; i++) {
System.out.println (intStartingPortNb+i);
String myurl = strIPAddress + ":" + (intStartingPortNb+i) + strSuffixSetAlarmOn;
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet(myurl);
HttpResponse response = null;
try {
response = httpClient.execute(httpGet, localContext);
System.out.println (response.getStatusLine().getStatusCode());
if (response.getStatusLine().getStatusCode() == 200)
intGoodCamera++;
else {
intBadCamera++;
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println ("OK: "+intGoodCamera + " KO: "+ intBadCamera);
Intent nextIntent = new Intent(MainActivity.this, Results.class);
MainActivity.this.startActivity(nextIntent);
}
});
....。