Android系统手机怎么修改移动网络设置

Android系统手机怎么修改移动网络设置,第1张

Android系统手机修改移动网络参数设置方法:

1、点击手机“设置”按钮,点击“无线与网络”选项下的“更多”;

2、点击“移动和网络”;

3、在“通用”选项或者“SIM卡”选项中即可修改对应移动数据参数。

android原生系统是不支持以太网络的连接的,这肯定是厂商定制了的,但是对于厂家定制的代码一般的都有或多或少的BUG,基本上这是属于BUG的,接口提供的不好。这应该是实际EthernetManager连接上了的,EthernetService也可以了的,IPC通信上了的。但是在connectivityManager里面,或者ConnectivitySerive里面,并没有获得这个信息(没有通知他这个接口做出改变)。建议这个时候应该用EthernetManager(各个平台,有线网络的管理类可能名字叫法不一样)

实现步骤:

下面解决办法来自于android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载。排到第三个。

1、获取ConnectivityManager对象

Context context = activitygetApplicationContext();

// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)

ConnectivityManager connectivityManager = (ConnectivityManager)contextgetSystemService(ContextCONNECTIVITY_SERVICE);

2、获取NetworkInfo对象

// 获取NetworkInfo对象

NetworkInfo[] networkInfo = connectivityManagergetAllNetworkInfo();

3、判断当前网络状态是否为连接状态

if (networkInfo[i]getState() == NetworkInfoStateCONNECTED)

{

return true;

}

4、在AndroidManifestxml中添加访问当前网络状态权限

<uses-permission android:name="androidpermissionACCESS_NETWORK_STATE"></uses-permission>

代码如下:

public class ClassTestDemoActivity extends Activity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

superonCreate(savedInstanceState);

setContentView(Rlayoutmain);

if (isNetworkAvailable(ClassTestDemoActivitythis))

{

ToastmakeText(getApplicationContext(), "当前有可用网络!", ToastLENGTH_LONG)show();

}

else

{

ToastmakeText(getApplicationContext(), "当前没有可用网络!", ToastLENGTH_LONG)show();

}

}

/

检查当前网络是否可用

@param context

@return

/

public boolean isNetworkAvailable(Activity activity)

{

Context context = activitygetApplicationContext();

// 获取手机所有连接管理对象(包括对wi-fi,net等连接的管理)

ConnectivityManager connectivityManager = (ConnectivityManager) contextgetSystemService(ContextCONNECTIVITY_SERVICE);

if (connectivityManager == null)

{

return false;

}

else

{

// 获取NetworkInfo对象

NetworkInfo[] networkInfo = connectivityManagergetAllNetworkInfo();

if (networkInfo != null && networkInfolength > 0)

{

for (int i = 0; i < networkInfolength; i++)

{

Systemoutprintln(i + "===状态===" + networkInfo[i]getState());

Systemoutprintln(i + "===类型===" + networkInfo[i]getTypeName());

// 判断当前网络状态是否为连接状态

if (networkInfo[i]getState() == NetworkInfoStateCONNECTED)

{

return true;

}

}

}

}

return false;

}

}

Android手机信号强度检测详细介绍

作者:skxy 字体:[增加 减小] 类型:转载 时间:2016-11-17 我要评论

这篇文章主要介绍了Android手机信号强度检测的相关资料,android定义了2种信号单位:dBm和asu。具体两种的关系本文给大家介绍非常详细,需要的朋友可以参考下

最近到处在跑着找工作,难免在面试过程中遇到这样那样的问题,记得最清楚一次在面试过程中被问到,当手机处于弱网状态下,如何处理,如何监听网络信号强度变化。但是真是蒙了,回答的乱七八糟,思路一点都不明确。今天小编在这里带领大家了解下关于手机信号强度的相关几个概念。

Android手机信号强度介绍

android定义了2种信号单位:dBm和asu。它们之间的关系是:dBm =-113+2asu,这是google给android手机定义的特有信号单位。例如,我的信号强度为-53dBm,则对应30asu,因为-53 = -113 + (230) 。

详细介绍两者:

asu:alone signal unit 独立信号单元,是一种模拟信号。ASU仅仅代表手机将它的位置传递给附近的信号塔的速率。它和dBm测量的是一样的东西,但是是以一种更加线性的方式来表示。

dBm:是一个表示功率绝对值的值(也可以认为是以1mW功率为基准的一个比值),计算公式为:10log(功率值/1mw)。

[例] 如果功率P为1mw,折算为dBm后为0dBm。

[例] 对于001mW的功率,按dBm单位进行折算后的值应为: 10log(001/1)=-20dBm。

这个数值越大,表明信号越好。由于手机信号强度一般较小,折算成为dBm一般都是负数。

中国移动的规范规定,手机接收电平>=(城市取-90dBm;乡村取-94dBm) 时,则满足覆盖要求,

也就是说此处无线信号强度满足覆盖要求-67dBm要比-90dBm信号要强20多个dB,

那么它在打电话接通成功率和通话过程中的话音质量都会好的多。再引入一个相关概念dB。

dB:是一个表征相对值的值,纯粹的比值,只表示两个量的相对大小关系,没有单位,当考虑甲的功率相比于乙功率大或小多少个dB时,按下面的计算公式:10log(甲功率/乙功率),如果采用两者的电压 比计算,要用20log(甲电压/乙电压)。

[例] 甲功率比乙功率大一倍,那么10lg(甲功率/乙功率)=10lg2=3dB,即甲的功率比乙的功率大3 dB。反之,如果甲的功率是乙的功率的一半,则甲的功率比乙的功率小3 dB。

总结:dBm是负数,越接近0信号强度越高,信号越好,但不可能为0。asu为正数,值越大信号越好。dB是两个量之间的比值,表示两个量间的相对大小,而dBm则是表示功率绝对大小的值。

关于对数运算,不记得的自行复习一下了。

下面再来了解一下网络类型吧,还是很多的,不过在国内只要了解国内三大运营商的网络类型大概就可以了。

电信

2G CDMA

3G CDMA2000

4G TD-LTE,FDD-LTE

移动

2G GSM

3G TD-SCDMA

4G TD-LTE,FDD-LTE

联通

2G GSM

3G WCDMA

4G TD-LTE,FDD-LTE

而谷歌API给我们提供的有19种类型,在TelephonyManager类中定义,具体如下

/ Network type is unknown /

public static final int NETWORK_TYPE_UNKNOWN = 0;

/ Current network is GPRS /

public static final int NETWORK_TYPE_GPRS = 1;

/ Current network is EDGE /

public static final int NETWORK_TYPE_EDGE = 2;

/ Current network is UMTS /

public static final int NETWORK_TYPE_UMTS = 3;

/ Current network is CDMA: Either IS95A or IS95B/

public static final int NETWORK_TYPE_CDMA = 4;

/ Current network is EVDO revision 0/

public static final int NETWORK_TYPE_EVDO_0 = 5;

/ Current network is EVDO revision A/

public static final int NETWORK_TYPE_EVDO_A = 6;

/ Current network is 1xRTT/

public static final int NETWORK_TYPE_1xRTT = 7;

/ Current network is HSDPA /

public static final int NETWORK_TYPE_HSDPA = 8;

/ Current network is HSUPA /

public static final int NETWORK_TYPE_HSUPA = 9;

/ Current network is HSPA /

public static final int NETWORK_TYPE_HSPA = 10;

/ Current network is iDen /

public static final int NETWORK_TYPE_IDEN = 11;

/ Current network is EVDO revision B/

public static final int NETWORK_TYPE_EVDO_B = 12;

/ Current network is LTE /

public static final int NETWORK_TYPE_LTE = 13;

/ Current network is eHRPD /

public static final int NETWORK_TYPE_EHRPD = 14;

/ Current network is HSPA+ /

public static final int NETWORK_TYPE_HSPAP = 15;

/ Current network is GSM {@hide} /

public static final int NETWORK_TYPE_GSM = 16;

/ Current network is TD_SCDMA {@hide} /

public static final int NETWORK_TYPE_TD_SCDMA = 17;

/ Current network is IWLAN {@hide} /

public static final int NETWORK_TYPE_IWLAN = 18;

下面通过一些实例来测试一下吧

首先记得加权限

<uses-permission android:name="androidpermissionINTERNET"/>

<uses-permission android:name="androidpermissionCHANGE_NETWORK_STATE"/>

<uses-permission android:name="androidpermissionACCESS_WIFI_STATE"/>

<uses-permission android:name="androidpermissionACCESS_NETWORK_STATE"/>

实例代码

public class MainActivity extends AppCompatActivity {

private static final int NETWORKTYPE_WIFI = 0;

private static final int NETWORKTYPE_4G = 1;

private static final int NETWORKTYPE_2G = 2;

private static final int NETWORKTYPE_NONE = 3;

public TextView mTextView;

public TelephonyManager mTelephonyManager;

public PhoneStatListener mListener;

/

网络信号强度监听

@param savedInstanceState

/

@Override

protected void onCreate(Bundle savedInstanceState) {

superonCreate(savedInstanceState);

setContentView(Rlayoutactivity_main);

mTextView = (TextView) findViewById(Ridtextview);

//获取telephonyManager

mTelephonyManager = (TelephonyManager) getSystemService(ContextTELEPHONY_SERVICE);

//开始监听

mListener = new PhoneStatListener();

//监听信号强度

mTelephonyManagerlisten(mListener, PhoneStatListenerLISTEN_SIGNAL_STRENGTHS);

}

@Override

protected void onResume() {

superonResume();

mTelephonyManagerlisten(mListener, PhoneStatListenerLISTEN_SIGNAL_STRENGTHS);

}

@Override

protected void onPause() {

superonPause();

//用户不在当前页面时,停止监听

mTelephonyManagerlisten(mListener, PhoneStatListenerLISTEN_NONE);

}

private class PhoneStatListener extends PhoneStateListener {

//获取信号强度

@Override

public void onSignalStrengthsChanged(SignalStrength signalStrength) {

superonSignalStrengthsChanged(signalStrength);

//获取网络信号强度

//获取0-4的5种信号级别,越大信号越好,但是api23开始才能用

// int level = signalStrengthgetLevel();

int gsmSignalStrength = signalStrengthgetGsmSignalStrength();

//获取网络类型

int netWorkType = getNetWorkType(MainActivitythis);

switch (netWorkType) {

case NETWORKTYPE_WIFI:

mTextViewsetText("当前网络为wifi,信号强度为:" + gsmSignalStrength);

break;

case NETWORKTYPE_2G:

mTextViewsetText("当前网络为2G移动网络,信号强度为:" + gsmSignalStrength);

break;

case NETWORKTYPE_4G:

mTextViewsetText("当前网络为4G移动网络,信号强度为:" + gsmSignalStrength);

break;

case NETWORKTYPE_NONE:

mTextViewsetText("当前没有网络,信号强度为:" + gsmSignalStrength);

break;

case -1:

mTextViewsetText("当前网络错误,信号强度为:" + gsmSignalStrength);

break;

}

}

}

public static int getNetWorkType(Context context) {

int mNetWorkType = -1;

ConnectivityManager manager = (ConnectivityManager) contextgetSystemService(ContextCONNECTIVITY_SERVICE);

NetworkInfo networkInfo = managergetActiveNetworkInfo();

if (networkInfo != null && networkInfoisConnected()) {

String type = networkInfogetTypeName();

if (typeequalsIgnoreCase("WIFI")) {

mNetWorkType = NETWORKTYPE_WIFI;

} else if (typeequalsIgnoreCase("MOBILE")) {

return isFastMobileNetwork(context) NETWORKTYPE_4G : NETWORKTYPE_2G;

}

} else {

mNetWorkType = NETWORKTYPE_NONE;//没有网络

}

return mNetWorkType;

}

/判断网络类型/

private static boolean isFastMobileNetwork(Context context) {

TelephonyManager telephonyManager = (TelephonyManager)contextgetSystemService(ContextTELEPHONY_SERVICE);

if (telephonyManagergetNetworkType() == TelephonyManagerNETWORK_TYPE_LTE) {

//这里只简单区分两种类型网络,认为4G网络为快速,但最终还需要参考信号值

return true;

}

return false;

}

}

关于信号获取流程,这个还需深入研究,目前只在应用层简单获取了网络信号。

由于Android可用于具有各种屏幕尺寸和像素密度的设备,因此您应该在网页设计中考虑到这些因素,以便您的网页始终以适当的大小显示。

当您定位到Android设备的网页时,您应该考虑以下两个主要因素:

视口

视口是为您的网页提供可绘制区域的矩形区域。 您可以指定多个视口属性,例如其大小和初始刻度。 最重要的是视图端口宽度,它定义了从网页的角度可用的水平像素总数(可用的CSS像素数)。

屏幕密度

WebView类和大多数Web浏览器将您的CSS像素值转换为与密度无关的像素值,因此您的网页以与中密度屏幕(约160dpi)相同的可感知大小显示。 然而,如果图形是您的网页设计的重要元素,则应该密切关注不同密度下的缩放,因为320dpi屏幕上的300像素宽的图像将被放大(使用每个CSS像素更多的物理像素) ,它可以产生人造物(模糊和像素化)

视口是您的网页绘制的区域。 虽然视口的总可见区域与缩放后的屏幕大小匹配,但视口具有自己的像素尺寸,可用于网页。 例如,尽管设备屏幕的物理宽度可能为480像素,但视口的宽度可以为800像素。 当视口比例为10时,这允许设计为800像素宽的网页在屏幕上完全可见。 默认情况下,Android(包括Chrome)上的大多数网络浏览器都将视口设置为较大的尺寸(称为“宽视口模式”,大约为980px宽)。 许多浏览器也尽可能缩小,默认情况下显示完整的视口宽度(称为“概览模式”)。

注意:当您的页面在WebView中呈现时,默认情况下不会使用宽视口模式(页面以完全缩放显示)。 您可以使用setUseWideViewPort()启用宽视口模式。

您可以使用文档<head>中的<meta name =“viewport”>标签来定义网页视口的属性,例如宽度和初始缩放级别。

以下语法显示所有支持的视口属性和每个受支持的值的类型:

例如,以下<meta>标记指定视口宽度应与设备屏幕宽度完全相符,并且应禁用缩放功能:

当优化您的移动设备的站点时,通常应将宽度设置为“设备宽度”,以使尺寸完全符合所有设备,然后使用CSS媒体查询来灵活地调整布局以适应不同的屏幕尺寸。

注意:只有当您确定您的网页布局是灵活的并且内容适合小屏幕的宽度时,才应禁用用户缩放。

Android浏览器和WebView支持CSS媒体功能,允许您为特定的屏幕密度创建样式 - -webkit-device-pixel-ratio CSS媒体功能。 您应用于此功能的值应为“075”,“1”或“15”,以表示样式分别用于具有低密度,中密度或高密度屏幕的设备。

例如,您可以为每个密度创建单独的样式表:

或者,在一个样式表中指定不同的样式:

有关处理不同屏幕密度(尤其是图像)的更多信息,请参阅高DPI图像以获得可变像素密度

使用JavaScript定位设备密度

Android浏览器和WebView支持DOM属性,可以让您查询当前设备的密度,即windowdevicePixelRatio DOM属性。此属性的值指定用于当前设备的缩放因子。例如,如果windowdevicePixelRatio的值为“10”,则设备被认为是中密度设备,默认情况下不应用缩放;如果值为“15”,则设备被认为是高密度设备,默认情况下页面缩放为15x;如果值为“075”,则设备被认为是低密度设备,默认情况下页面缩放为075x。当然,Android浏览器和WebView应用的扩展是基于网页的目标密度,如关于定义视口目标密度的部分所述,默认目标是中等密度,但是您可以更改目标来影响如何您的网页会缩放不同的屏幕密度。

例如,以下是使用JavaScript查询设备密度的方法:

Supporting Different Screens in Web Apps

以上内容为官方翻译,翻译不准确地方望指出:

以上就是关于Android系统手机怎么修改移动网络设置全部的内容,包括:Android系统手机怎么修改移动网络设置、android平板 以太网 网线重插后无法获取getActiveNetworkInfo、android 如何判断网络是否能够上网等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9724029.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存