logo

离线SDK < 更新时间:2020-04-13 >

功能介绍

面向智能设备、移动终端提供压缩版的乐虎直播下载网址引擎——离线SDK。只要将离线SDK嵌入到硬件终端中,无需连接网络即可实现多种语言间的实时翻译。可以确保在国外、山区、深谷、海上、地下等网络覆盖不到或者网络不佳的情况下,智能翻译设备仍能稳定的提供翻译服务。

文件及文件夹说明

名称 说明
niutrans
存放每个语言方向的模型文件
jniLibs文件夹
存放armeabi和armeabi-v7a架构的so库,满足绝大多数安卓设备需求,如果架构支持,尽量选择armeabi-v7a架构。
Demo文件夹
Android SDK的测试程序工程(集成开发环境是Android Studio 2.3.3)
jar文件夹
存放NiuTransOffline.jar包,是Android SDK中所需要的jar包

SDK集成步骤

1.拷贝模型文件

  • 将niutrans文件夹和niutrans文件夹内对应语言方向的模型文件拷贝到安卓设备的SD卡根目录,目前SD卡仅支持 “/storage/emulated/0/”路径。
  • 2.添加Jar包(以Android Studio为例)

  • 新建Android工程,在把NiuTransOffline.jar拷贝到app/libs目录下
  • 右键点击NiuTransOffline.jar,选择Add as Library,并点击OK
  • 3.添加so文件

  • 在app/src/main目录下新建jniLibs文件夹
  • 将armeabi或armeabi-v7a文件夹拷贝到jniLibs目录下
  • 4.添加权限

  • 在AndroidMaifest.xml中加入以下几行代码

                                                        <uses-permission  android:name="android.permission.READ_EXTERNAL_STORAGE"  />
    <uses-permission  android:name="android.permission.WRITE_EXTERNAL_STORAGE"  />
    <uses-permission  android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"  />
    <uses-permission  android:name="android.permission.READ_PHONE_STATE"  />
    <uses-permission  android:name="android.permission.INTERNET"  />
    <uses-permission  android:name="android.permission.ACCESS_WIFI_STATE"  />

  • 5.功能集成说明

  • Android中入口模块MainActivity.java:(以中英为例,其他语种使用方法类似)

                                                        package  com.niutrans.offline.demo;
    import  com.niutrans.translator.Translator; 
    
    import  android.Manifest;
    import  android.app.Activity; 
    import  android.content.Context;
    import  android.content.pm.PackageManager; 
    import  android.content.res.AssetManager; 
    import  android.os.Environment;
    import  android.support.v4.app.ActivityCompat; 
    import  android.support.v7.app.AppCompatActivity;
    import  android.os.Bundle;
    import  android.widget.TextView;
    
    import  java.io.BufferedReader; 
    import  java.io.File;
    import  java.io.FileInputStream; 
    import  java.io.FileOutputStream; 
    import  java.io.IOException; 
    import  java.io.InputStream; 
    import  java.io.InputStreamReader;
    import  java.text.SimpleDateFormat;
    
    public  class  MainActivity  extends  AppCompatActivity  {
        private  static  final  int  REQUEST_EXTERNAL_STORAGE  =  1; 
        private  static  String[]  PERMISSIONS_STORAGE  =  {
            Manifest.permission.READ_EXTERNAL_STORAGE, 
            Manifest.permission.WRITE_EXTERNAL_STORAGE, 
            Manifest.permission.READ_PHONE_STATE,
        };
    
        public  static  void  Permissions(Activity  activity)  {
            //  Check  if  we  have  write  permission
            int  permission_write  =  ActivityCompat.checkSelfPermission(activity, 
                    Manifest.permission.WRITE_EXTERNAL_STORAGE);
            int  permission_state  =  ActivityCompat.checkSelfPermission(activity,
                    Manifest.permission.READ_PHONE_STATE);
    
            if  (permission_write  !=  PackageManager.PERMISSION_GRANTED  ||
              permission_state  !=  PackageManager.PERMISSION_GRANTED)  {
                //  We  don't  have  permission  so  prompt  the  user 
                ActivityCompat.requestPermissions(activity,  PERMISSIONS_STORAGE,
                REQUEST_EXTERNAL_STORAGE);
            }
        }
    
        @Override
        protected  void  onCreate(Bundle  savedInstanceState)  { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.activity_main);
    
            Permissions(this);	//  获取读取设备文件的相关权限
            File  f  =  Environment.getExternalStorageDirectory();    //  获得设备的根目录路径
            TextView  tTitle=(TextView)findViewById(R.id.tTitle);
    
            Translator  handler  =  new  Translator();
            boolean  init_result  =  handler.load("zh",  "en",  getApplicationContext());
    
            if(init_result)  {
                output  =  handler.translate("你现在考虑的怎么样了?  "); System.out.println(output);
                tTitle.append("初始化中译英成功!\n\n");
            }
            else{
                tTitle.append("初始化中译英失败!\n\n");
            }   
    
            handler.unload();
        }
    }

  • 说明

  • 离线翻译项目中主要引用了NiuTransOffline.jar中的Translator类,在使用翻译功能时需要import进来。
  • 资源文件夹:niutrans文件夹和文件夹内的对应语言方向的模型文件需要拷贝到设备根目下,如中译英目录结构为:niutrans/zh2en/...
  • Translator类:对外提供翻译接口,一共有三个函数,分别是load, translate, unload 三个函数。

  • boolean load(String source, String target, Context context):source代表源语语种缩写(如zh),target代表目标语语种缩写(如en),并需要Context(可以通过getApplicationContext()获得)参数模型进行初始化,在启动程序时执行,只需一次。
  • String translate(String input):input是输入待翻译的句子,返回的是翻译结果。void
  • unload() : 对模型进行销毁,在程序退出时执行,只需一次。
  • 语种和目录对应关系

    语种方向 目录名
    中英
    zh2en
    英中
    en2zh

    常见问题及注意事项

  • 在进行安卓真机调试时,会出现是否允许读取手机内部存储的弹窗,由于要读取模型文件,出现弹窗时点允许即可
  • niutrans文件夹要放在SD卡根目录中,且目前仅支持如下SD卡路径:/storage/emulated/0/
  • Jar包以及so库的位置确保要放置正确,在添加Jar后要右键选择Add as Library
  • 请您留言
    感谢留言我们会尽快与您联系关闭发送