项目中的笔记:
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'](哈哈,加这句)
}
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'](哈哈,加这句)
}