项目笔记

来源:互联网 发布:linux配置ip地址命令 编辑:程序博客网 时间:2024/05/29 03:16
项目中的笔记:
1、获取手机IP地址
   ConnectivityManager manager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
   NetworkInfo info = manager.getActiveNetworkInfo();
   if(info == null){
       Toast.makeText(DefineViewActivity.this,"手机没有联网",Toast.LENGTH_SHORT).show();
   }else{
       if(info.isAvailable()){
           if(info.getType() == ConnectivityManager.TYPE_MOBILE){
               try {
                   for(Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();en.hasMoreElements();){
                       NetworkInterface networkInterface = en.nextElement();
                       for(Enumeration<InetAddress> inetAddressEnumeration = networkInterface.getInetAddresses(); inetAddressEnumeration.hasMoreElements();){
                           InetAddress address = inetAddressEnumeration.nextElement();
                           if(!address.isLoopbackAddress()){
                               Log.i("wanlijun","mobile:"+address.getHostAddress().toString());
                           }
                       }
                   }
               }catch (Exception e){
                   e.printStackTrace();
               }
           }else if(info.getType() == ConnectivityManager.TYPE_WIFI){
               WifiManager wifiManager = (WifiManager)getApplicationContext().getSystemService(WIFI_SERVICE);
               if(!wifiManager.isWifiEnabled()){
                   wifiManager.setWifiEnabled(true);
               }else{
                   WifiInfo wifiInfo = wifiManager.getConnectionInfo();
                   int ipAddress = wifiInfo.getIpAddress();
                   Log.i("wanlijun","wifi:"+intToIp(ipAddress));
               }
           }
       }else{
           Toast.makeText(DefineViewActivity.this,"网络不可用",Toast.LENGTH_SHORT).show();
       }
   }
 
2、腾讯浏览服务X5内核集成遇到的问题
   X5内核解决的问题:原生WebView兼容性差,加载速度慢,内存泄露,独立小窗播放视频,全屏播放H5视频
   X5内核集成步骤:
   第一步:下载SDK和SDK接入示例
   第二步:导入jar包
   第三步:libs下新建armeabi文件夹,加入liblbs.so文件
   第四步:在module下的build.gradle文件里加上如下
           android{
    defaultConfig{
  ndk{
    abiFilters "armeabi","armeabi-v7a","x86","mips"
  }
}
  }
    第五步:在自定义Application类里面加入
//第一次安装集成该SDK的版本必须预热
//开启额外进程 服务 预加载X5内核, 此操作必须在主进程调起X5内核前进行,否则将不会实现预加载
//搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。
QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {


            @Override
            public void onViewInitFinished(boolean arg0) {
                // TODO Auto-generated method stub
                //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。
                Log.d("app", " onViewInitFinished is " + arg0);
            }


            @Override
            public void onCoreInitFinished() {
                // TODO Auto-generated method stub
            }
        };
        //x5内核初始化接口
        QbSdk.initX5Environment(getApplicationContext(),  cb);
第六步:引用(加载本地HTML)
<com.tencent.smtt.sdk.WebView
        android:id="@+id/tencent_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.tencent.smtt.sdk.WebView>
tencent_webview = (WebView)findViewById(R.id.tencent_webview);
     tencent_webview.getSettings().setJavaScriptEnabled(true);
     tencent_webview.getSettings().setAppCacheEnabled(true);
     tencent_webview.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
     tencent_webview.getSettings().setDomStorageEnabled(true);
     tencent_webview.loadUrl("file:///android_asset/ytb/ytObjInfo.html");
项目中遇到的问题:
1.APP第一次安装的时候打开X5内核的WebView控件会出现短暂的黑屏(HTC A9w android 7.0版本)
原因:X5内核没有进行预加载
解决:加入上面第五步
2.TBS:initX5Core -- loadSucc: false;
exception: java.lang.reflect.InvocationTargetException; 
cause: java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/com.tencent.mm/app_tbs/core_share/libmttwebview.so" is 32-bit instead of 64-bit
原因:X5内核只有32位的so文件,没有提供64位so文件
解决:官方文档提示把32位的so库直接放到64位的文件夹中当64位使用
    或者只在libs/armeabi文件夹中加入liblbs.so文件
在build.gradle文件里面加入ndk{abiFilters "armeabi","armeabi-v7a","x86","mips"}
在build.gradle文件里加入
sourceSets {
          main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs'](哈哈,加这句)
           }
原创粉丝点击