Tensorflow学习笔记(七)Android端调用模型遇到的一个小问题

Tensorflow学习笔记(七)Android端调用遇到的一个小问题

之前在Android端调用模型的时候因为是简单示范,所以都是在MainActivity中使用,没想到在继承activity类之外的类中使用居然遇到了一点小麻烦~~

之前在TF类中定义了下面的接口来加载Tensorflow的.pb模型

    TF(AssetManager assetManager) {
        //接口定义
        Log.e("模型","TensoFlow模型文件加载");
        inferenceInterface = new TensorFlowInferenceInterface(assetManager,MODEL_FILE);
        Log.e("模型","TensoFlow模型文件加载成功");
    }

跳进去查看一下
在这里插入图片描述
可以看到这里需要传入一个AssetManager 用来加载Assets资源文件夹中的.pb模型。AssetManager提供对应用程序的原始资源文件进行访问,这个类提供了一个低级别的API,它允许你以简单的字节流的形式打开和读取和应用程序绑定在一起的原始资源文件。
更加具体的AssetManager类的介绍和使用可以参考这里的文章

如果是在MainActivity中那么传入AssetManager是非常简单的:

TF tf = new TF(getAssets());

但是在其他 非继承activity类中使用就不太一样了,这里需要用到Application类,Android中Application类用法请参考这篇文章这里直接贴出具体解决方法:

1.在ApplicationManifest.xml文件中配置自定义的Application
(1)打开ApplicationManifest.xml文件,添加

android:name= ".MyApplication"  

鼠标指针点到上方 alt+enter,利用Android自动纠错创建 继承Application类的MyApplication。
在这里插入图片描述2.在生成的MyApplication类中创建onCreate()方法,并且声明Context,在onCreate() 方法中使用getApplicationContext() 获取到Context,在创建一个get方法,以便其他类获取Context:

public class MyApplication extends Application {
    private static Context mContext;

    @Override
    public void onCreate()
    {
        super.onCreate();
        mContext = getApplicationContext();

    }

    public static Context getContext(){
        return mContext;
    }

}

这样,别的类就可以通过getContext() 来获取context了。在利用获取到的context.getAssets() 就OK了

    Context My_Context;
    My_Context = My_Application.getContext();
    TF tf = new TF(My_Context.getAssets());

希望这篇文章对您有帮助,感谢阅读!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值