私はJavaを使い慣れていないので、パスを渡すことができるJavaファイルを作成したいと思います。このJavaクラスは結果リストを返します。主な目標は、引数をクラスに渡して結果リストを返すことができるため、3-4アクティビティでこのasynctaskを使用する必要がないことです。Javaでasynctaskクラスを作成
このスクリプトをどのように変更する必要がありますか(onCreateの削除など)
ありがとうございます!
public class Aszin extends AppCompatActivity {
private static String USERNAME = "tom"; // username for remote host
private static String PASSWORD = "pass"; // password of the remote host
private static String host = "192.168.0.41"; // remote host address
private static int port = 22;
String cmd = "python /home/pi/Desktop/projects/ami/ami2.py ";
TextView tv1;
Button btn_ssh;
private AsyncTask<String, Void, Void> asyncTask;
ProgressBar bar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aszin);
bar = (ProgressBar) findViewById(R.id.kuki);
bar.setVisibility(View.INVISIBLE);
tv1 = (TextView) findViewById(R.id.tv1);
tv1.setText("default");
btn_ssh = (Button) findViewById(R.id.btn1);
btn_ssh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connect2pi(cmd);
}
});
}
public void connect2pi(final String cmd) {
asyncTask = new AsyncTask<String, Void, Void>() {
@Override
protected Void doInBackground(String... Params) {
List<String> result = new ArrayList<>();
try {
JSch jsch = new JSch();
Session session = jsch.getSession(USERNAME, host, port);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(PASSWORD);
session.connect();
ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
InputStream in = channelExec.getInputStream();
channelExec.setCommand(cmd);
channelExec.connect();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
result.add(line);
}
channelExec.getExitStatus();
channelExec.disconnect();
session.disconnect();
} catch (Exception e) {
System.err.println("Error: " + e);
}
return null;
}
@Override
protected void onPostExecute(Void param) {
//tv1.setText("your file has been downloaded");
Toast.makeText(Aszin.this, "your file has been downloaded", Toast.LENGTH_SHORT)
.show();
Toast.makeText(FiveButtonActivity.this, "result: " + result.toString(), Toast.LENGTH_SHORT).show();
btn_ssh.setEnabled(true);
bar.setVisibility(View.GONE);
}
@Override
protected void onPreExecute() {
super.onPreExecute();
//tv1.setText("your file is getting downloaded");
Toast.makeText(Aszin.this, "your file is getting downloaded", Toast.LENGTH_SHORT)
.show();
bar.setVisibility(View.VISIBLE);
btn_ssh.setEnabled(false);
}
};
asyncTask.execute(cmd);
}
}
クールに行くAsyncTaskの詳細と例については
!どうもありがとう! – Marci
何らかの理由で何らかの理由で私は待つ必要があります... – Marci
好奇心の高まりから、ランダムなアクティビティからこのpiConnector.javaに引数を渡すにはどうしたらいいですか? https://pastebin.com/j7CrzNXW – Marci