当前位置: 首页 > 知识库问答 >
问题:

Android Java应用程序Jsch使用按钮发送命令

梁嘉祥
2023-03-14

我试图写我的第一个每一个Android应用程序连接到我的树莓派和控制我的DSLR使用gphoto2库。我目前有一个非常粗糙的应用程序,有两个按钮,一个“连接”按钮和一个“捕获”按钮。

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();

    }
}

我可以连接到我的raspberry pi,但如果不使用以下命令从连接部分调用它,我无法将jsch会话传递到“捕获”按钮:

sendCapture(session);

我希望代码使用“连接”按钮通过ssh连接,然后能够使用“捕获”按钮尽可能多次地拍照。欢迎任何问题或一般建议。

谢谢

共有1个答案

苏华藏
2023-03-14
    Button btn = (Button)findViewById(R.id.btn);
    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            String ip,username,password;
            ip="192.168.x.x";
            username="guest";
            password="guest";
  //Write your code here 

 });
 类似资料:
  • 我不明白为什么谷歌开发者控制台上的“取消发布应用”按钮不可用(我可以看到,但不能按下)。 看起来该链接已被禁用。 有人知道为什么会这样吗?

  • 我用苹果脚本做了一个叫做星期五的应用程序。当我告诉它“打开chrome”时,它会打开谷歌chrome,这是在脚本编辑器和脚本编辑器之外工作的。我也可以告诉它“打开一个新标签”,它会用击键打开一个新标签: 现在,上面的代码只在我在脚本编辑器上运行FRIDAY时有效,但在我将FRIDAY保存为应用程序并运行它时无效。 脚本编辑器和我的应用程序(星期五)具有可访问性,实际上星期五具有完整的磁盘可访问性。

  • 在这个孩子的acitivy我有一个页面有一个旋转器和一个按钮。 首先,按钮是工作的,但当我点击旋转器,应用程序将崩溃。为了解决这个问题,我必须改变 至 我在活动中得到了这个方法,但他没有找到这个方法,因为我查看了contentView=LayoutInflater.from(getParent()).Inflate(r.layout.show_add_expresse_event,null);se

  • 我正在开发Windows Phone8.1 RT应用程序。 场景: 对此有什么解决办法?

  • 在断开连接按钮上,我尝试了: relivant按钮代码的当前部分 } } 编辑:猜是因为varible会话在winconnect中,而不是在按钮中,所以找不到它? Edit2:尝试下面的建议后,单击断开连接就会锁定 Edit5:如果调用session.disconnect确实有效,则选中此选项,但由于某种原因,它会导致我的程序锁定

  • 每次单击我创建的按钮时,我的应用程序都会挂起。我尝试将这两个Java代码分开,它们工作得很好。谁能帮我查一下吗?我只想通过onClickListener调用第二个编码。 编辑:我再次检查,我很确定问题出在OnClickListener中,因为当我删除这些内容时,我可以按下按钮,它不会挂起,尽管它也不会转到其他页面。 对不起,我真的不知道如何张贴日志,这些是我在我的程序的日志中看到的东西。 这是Ma