使用 android 应用程序调用 raspberry pi 上的函数?

Call a function on raspberry pi using android application?

我有一个项目,我需要在 raspberry pi 上调用一个函数。我已经在 python.Both 中编写了该功能,设备将使用 WiFi 连接。现在我不知道如何在我的应用程序中调用 python 函数。

我将 raspberry pi 和 android 连接到同一个 Wifi 网络,然后使用套接字连接到特定的 IP 和端口。 运行 Android.

上的以下代码
 class CT implements Runnable {
        String ip1;
        int port1;
        public CT(String ip, int port){
            ip1=ip;
            port1=port;
        }
        @Override
        public void run(){
            try{
                in = InetAddress.getByName(ip1);
                s = new Socket(in,port1);
                i = new DataInputStream(s.getInputStream());
                send("query");
                receive();
            }catch(Exception e){}
        }
    }
    public void send(String str){
        try{
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(s.getOutputStream())),true);
            out.println(str);
            receive();
        }catch(Exception e){}
    }
    public void receive(){
        stopWorker=false;
        workerThread = new Thread(new Runnable() {
            public void run() {
                while(!Thread.currentThread().isInterrupted()&&!stopWorker)
                {
                    try{
                        int n = i.available();
                        if(n>0){
                            byte[] received = new byte[n];
                            i.read(received);
                            data = new String(received,"US-ASCII");
                            h.post(new Runnable()
                            {
                                public void run()
                                {
                                    try{
                                        toggleUi(data);
                                    }
                                    catch(Exception x){}
                                }
                            });
                        }
                    }catch(Exception e){
                        stopWorker=true;
                    }
                }
            }
        });
        workerThread.start();
    }

    public void toggleUi(String data) {
        if(data.contains("PIROK")){


            t1.setText("PIR IS ON");

        }
        if(data.contains("PIROF")){

            t1.setText("PIR IS OFF");

        }
        if (data.contains("1On"))
            s1.setChecked(true);
        else if(data.contains("1Of"))
            s1.setChecked(false);
        if(data.contains("2On"))
            s2.setChecked(true);
        else if(data.contains("2Of"))
            s2.setChecked(false);
    }

    class Close implements Runnable {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            try{
                i.close();
                out.close();
                s.close();
            }
            catch(Exception e){}
        }

    }

-Raspberry pi 上的这段代码作为一项服务来接收来自 android 的呼叫。

from socket import *
import RPi.GPIO as GPIO
import time

GPIO.setwarnings(False)
def init():
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(11, GPIO.OUT)  # motor 2
    GPIO.setup(13, GPIO.OUT)  # motor 2
    GPIO.setup(15, GPIO.OUT)  # motor 1
    GPIO.setup(16, GPIO.OUT)  # motor 1
    GPIO.setup(36, GPIO.OUT)
    GPIO.setup(37, GPIO.OUT)

GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)
GPIO.setup(16, GPIO.OUT)
GPIO.setup(37, GPIO.OUT)  # enable 2
GPIO.setup(36, GPIO.OUT)  # enable 1

GPIO.output(36, True)  # enable 1
GPIO.output(37, True)  # enable 2

state = True

HOST = "192.168.0.107"  # local host
PORT = 9000  # open port 7000 for connection
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)  # how many connections can it receive at one time
conn, addr = s.accept()  # accept the connection
print "Connected by: ", addr  # print the address of the person connected
while True:
    data = conn.recv(1024)  # how many bytes of data will the server receive

    my_data= data.rstrip()
    print ('data is: ',my_data)
    if my_data == 'u':
        init()
        GPIO.output(11, True)
        GPIO.output(13, False)
        GPIO.output(15, True)
        GPIO.output(16, False)
        print 'forward'
        #GPIO.cleanup()

    elif my_data == 'l':
        init()
        print 'left'
        GPIO.output(11, True)
        GPIO.output(13, True)
        GPIO.output(15, True)
        GPIO.output(16, False)
        #GPIO.cleanup()

    elif my_data == 'r':
        init()
        print 'right'
        GPIO.output(11, True)
        GPIO.output(13, False)
        GPIO.output(15, True)
        GPIO.output(16, True)
        #GPIO.cleanup()

    elif my_data == 'd':
        init()
        print 'reverse'
        GPIO.output(11, False)
        GPIO.output(13, True)
        GPIO.output(15, False)
        GPIO.output(16, True)
        #GPIO.cleanup()
    else :
        init()
        print 'stop'
        GPIO.output(11, False)
        GPIO.output(13, False)
        GPIO.output(15, False)
        GPIO.output(16, False)
        #GPIO.cleanup()

    print "Received: ", repr(data)
# reply = raw_input("Reply: ") #server's reply to the client
    reply = ("ok")
    conn.sendall(reply)
conn.close()