Raspberry Pi に接続し、gphoto2 ライブラリを使用して DSLR を制御するための最初のすべての Android アプリを作成しようとしています。私は現在、「接続」ボタンと「キャプチャ」ボタンの 2 つのボタンを備えた非常に粗雑なアプリを持っています。
package com.example.myfirstapp;
import java.util.Properties;
import com.jcraft.jsch.*;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
/** Called when the user clicks the send button */
public void sshConnect(View view) throws Exception {
Properties props = new Properties();
props.put("StrictHostKeyChecking", "no");
String host="123.456.7.89";
String user ="pi";
String pwd = "password";
int port = 22;
Properties config = new Properties();
config.put("StrictHostKeyChecking", "no");
config.put("compression.s2c", "zlib,none");
config.put("compression.c2s", "zlib,none");
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, port);
session.setConfig(config);
session.setPassword(pwd);
session.connect();
Context context = getApplicationContext();
CharSequence text = "Connected to Pi";
int duration = android.widget.Toast.LENGTH_SHORT;
android.widget.Toast toast = android.widget.Toast.makeText(context, text, duration);
toast.show();
}
public static void sendCapture(Session session) throws Exception {
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand("gphoto2 --capture-image");
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
channel.connect();
}
}
ラズベリーパイに接続できますが、次を使用して接続セクションから呼び出さないと、jsch セッションを「キャプチャ」ボタンに渡すことができません。
sendCapture(session);
「接続」ボタンを使用してコードをssh経由で接続し、「キャプチャ」ボタンを使用してできるだけ何度でも写真を撮れるようにしたいと思います。質問や一般的なアドバイスを歓迎します。
ありがとう