AndroidStudio2023添加Python环境,java和python互调

1.根目录settings.gradle文件添加

maven { url "https://chaquo.com/maven" }
2.项目的build.gradle添加
id 'com.chaquo.python' version '12.0.0' apply false

3.app里面的build.gradle中添加
id 'com.chaquo.python'
4然后在app里面的build.gradle中的defaultConfig中添加
        ndk {
            abiFilters "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
        }
5.然后在app里面的build.gradle中的defaultConfig中添加
        python {
            buildPython "D:/miniconda3/python.exe"
        }

点击同步 

 然后即可看到python文件夹

///以下资源来源于网络收集未验证 

python hello.py

from java import jclass

def greet(name):
    print("--- hello,%s ---" % name)

def add(a,b):
    return a + b

def sub(count,a=0,b=0,c=0):
    return count - a - b -c

def get_list(a,b,c,d):
    return [a,b,c,d]

def print_list(data):
    print(type(data))
    # 遍历Java的ArrayList对象
    for i in range(data.size()):
        print(data.get(i))

# python调用Java类
def get_java_bean():
    JavaBean = jclass("com.wwb.test.python.JavaBean")#用自己的包名
    jb = JavaBean("python")
    jb.setData("json")
    jb.setData("xml")
    jb.setData("xhtml")
    return jb

java调python

package com.wwb.test.python;

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;

import com.chaquo.python.Kwarg;
import com.chaquo.python.PyObject;
import com.chaquo.python.android.AndroidPlatform;
import com.chaquo.python.Python;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    static final String TAG = "PythonOnAndroid";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initPython();
        callPythonCode();
    }
    // 初始化Python环境
    void initPython(){
        if (! Python.isStarted()) {
            Python.start(new AndroidPlatform(this));
        }
    }
    // 调用python代码
    void callPythonCode(){
        Python py = Python.getInstance();
        // 调用hello.py模块中的greet函数,并传一个参数
        // 等价用法:py.getModule("hello").get("greet").call("Android");
        py.getModule("hello").callAttr("greet", "Android");

        // 调用python内建函数help(),输出了帮助信息
        py.getBuiltins().get("help").call();

        PyObject obj1 = py.getModule("hello").callAttr("add", 2,3);
        // 将Python返回值换为Java中的Integer类型
        Integer sum = obj1.toJava(Integer.class);
        Log.d(TAG,"add = "+sum.toString());

        // 调用python函数,命名式传参,等同 sub(10,b=1,c=3)
        PyObject obj2 = py.getModule("hello").callAttr("sub", 10,new Kwarg("b", 1), new Kwarg("c", 3));
        Integer result = obj2.toJava(Integer.class);
        Log.d(TAG,"sub = "+result.toString());

        // 调用Python函数,将返回的Python中的list转为Java的list
        PyObject obj3 = py.getModule("hello").callAttr("get_list", 10,"xx",5.6,'c');
        List<PyObject> pyList = obj3.asList();
        Log.d(TAG,"get_list = "+pyList.toString());

        // 将Java的ArrayList对象传入Python中使用
        List<PyObject> params = new ArrayList<PyObject>();
        params.add(PyObject.fromJava("alex"));
        params.add(PyObject.fromJava("bruce"));
        py.getModule("hello").callAttr("print_list", params);

        // Python中调用Java类
        PyObject obj4 = py.getModule("hello").callAttr("get_java_bean");
        JavaBean data = obj4.toJava(JavaBean.class);
        data.print();
    }
}

python调java

//新建java类JavaBean
package com.wwb.test.python;

import android.util.Log;
import java.util.ArrayList;
import java.util.List;

public class JavaBean {
    private String name;
    private List<String> data;

    public JavaBean(String n){
        this.name = n;
        data = new ArrayList<String>();
    }

    public void setData(String el){
        this.data.add(el);
    }

    public void print(){
        for (String it: data) {
            Log.d("Java Bean - "+this.name,it);
        }
    }
}

在Android Studio中使用Python算法,可以通过Chaquopy插件来实现。Chaquopy是一个用于在Android Studio中添加Python环境的工具,它可以实现JavaPython之间的互调[^1]。 以下是在Android Studio中使用Python算法的步骤: 1. 首先,确保已经在Android Studio中安装了Chaquopy插件,并且已经配置好了Python环境。 2. 在Android Studio的项目中创建一个新的Python文件,或者将现有的Python文件添加到项目中。 3. 在Python文件中编写你的算法代码。你可以使用Python的各种库和函数来实现你的算法逻辑。 4. 在Java代码中调用Python算法。你可以使用Chaquopy提供的API来实现JavaPython之间的互调。例如,你可以使用Chaquopy提供的Python对象来执行Python代码,并获取返回的结果。 下面是一个示例,演示了如何在Android Studio中使用Python算法: 1. 在Android Studio中创建一个新的Python文件,命名为`algorithm.py`,并编写以下代码: ```python def calculate_sum(a, b): return a + b ``` 2. 在Java代码中调用Python算法。例如,在MainActivity.java文件中,你可以编写以下代码: ```java import com.chaquo.python.Python; import com.chaquo.python.android.AndroidPlatform; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化Python环境 if (!Python.isStarted()) { Python.start(new AndroidPlatform(this)); } // 调用Python算法 Python py = Python.getInstance(); PyObject algorithm = py.getModule("algorithm"); PyObject result = algorithm.callAttr("calculate_sum", 2, 3); int sum = result.toInt(); // 输出结果 Log.d("Python Algorithm", "Sum: " + sum); } } ``` 在上述示例中,我们首先初始化了Python环境,并获取了Python实例。然后,我们通过`getModule`方法获取了Python文件`algorithm.py`中的模块。最后,我们调用了Python算法函数`calculate_sum`,并获取了返回的结果。 请注意,上述示例仅演示了在Android Studio中使用Python算法的基本步骤。实际使用中,你可以根据自己的需求编写更复杂的Python算法,并在Java代码中进行调用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值