android 能判断当前网络是否连接,连接的是 wifi 还是 3g4g

android 能判断当前网络是否连接,连接的是 wifi 还是 3g4g,第1张

// 获取代表联网状态的NetWorkInfo对象 NetworkInfo networkInfo = connManagergetActiveNetworkInfo();

// 获取当前的网络连接是否可用 if (null == networkInfo){ToastmakeText(this, "当前的网络连接不可用", ToastLENGTH_SHORT)show();

//当网络不可用时,跳转到网络设置页面 startActivityForResult(new Intent(

androidproviderSettingsACTION_WIRELESS_SETTINGS), 1);} else {boolean available = networkInfoisAvailable();

if (available){Logi("通知", "当前的网络连接可用");

ToastmakeText(this, "当前的网络连接可用", ToastLENGTH_SHORT)show();} else {Logi("通知", "当前的网络连接不可用");

ToastmakeText(this, "当前的网络连接不可用", ToastLENGTH_SHORT)show();}}State state = connManagergetNetworkInfo(

ConnectivityManagerTYPE_MOBILE)getState();

if (StateCONNECTED == state){Logi("通知", "GPRS网络已连接");

ToastmakeText(this, "GPRS网络已连接", ToastLENGTH_SHORT)show();}state = connManagergetNetworkInfo(ConnectivityManagerTYPE_WIFI)

getState();

if (StateCONNECTED == state){Logi("通知", "WIFI网络已连接");

ToastmakeText(this, "WIFI网络已连接", ToastLENGTH_SHORT)show();}//// 跳转到无线网络设置界面

// startActivity(new

// Intent(androidproviderSettingsACTION_WIRELESS_SETTINGS));

//// 跳转到无限wifi网络设置界面

// startActivity(new

// Intent(androidproviderSettingsACTION_WIFI_SETTINGS)); }也可以:

privatevoid testConnectivityManager(){ConnectivityManager conMan = (ConnectivityManager) getSystemService(ContextCONNECTIVITY_SERVICE);

//mobile 3G Network State mobile = conMangetNetworkInfo(ConnectivityManagerTYPE_MOBILE)getState();

Logd(mobiletoString());

//wifi Network State wifi = conMangetNetworkInfo(ConnectivityManagerTYPE_WIFI)getState();

Logd(wifitoString());

//如果3G网络和wifi网络都未连接,且不是处于正在连接状态 则进入Network Setting界面 由用户配置网络连接if(mobile==StateCONNECTED||mobile==StateCONNECTING)return;if(wifi==StateCONNECTED||wifi==StateCONNECTING)return;startActivity(new Intent(SettingsACTION_WIRELESS_SETTINGS));//进入无线网络配置界面

//startActivity(new Intent(SettingsACTION_WIFI_SETTINGS)); //进入手机中的wifi网络设置界面 }

思路如下:

java里面有专门获取系统属性的东西,在System里面。

比如

data 时间1=当前时间;

void{执行的程序};

data 时间2 = 当前时间;

启动时间等于 时间2 - 时间1,再用dataformat转换格式。

其他的几个属性也能这样来做。流量不知道怎么实现。提交回答

androidviewVelocityTracker主要用跟踪触摸屏事件(flinging事件和其他gestures手势事件)的速率。用addMovement(MotionEvent)函数将Motion event加入到VelocityTracker类实例中你可以使用getXVelocity() 或getXVelocity()获得横向和竖向的速率到速率时,但是使用它们之前请先调用computeCurrentVelocity(int)来初始化速率的单位 。

主要函数

Public Methods

void addMovement(MotionEvent event)

Add a user's movement to the tracker

void clear()

Reset the velocity tracker back to its initial state

void computeCurrentVelocity(int units, float maxVelocity)

Compute the current velocity based on the points that have been collected

int unitis表示速率的基本时间单位。unitis值为1的表示是,一毫秒时间单位内运动了多少个像素, unitis值为1000表示一秒(1000毫秒)时间单位内运动了多少个像素

floatVelocity表示速率的最大值

void computeCurrentVelocity(int units)

Equivalent to invoking computeCurrentVelocity(int, float) with a maximum velocity of FloatMAX_VALUE

abstract T getNextPoolable()

float getXVelocity()

Retrieve the last computed X velocity

float getXVelocity(int id)

Retrieve the last computed X velocity

float getYVelocity(int id)

Retrieve the last computed Y velocity

float getYVelocity()

Retrieve the last computed Y velocity

abstract boolean isPooled()

static VelocityTracker obtain()

Retrieve a new VelocityTracker object to watch the velocity of a motion

void recycle()

Return a VelocityTracker object back to be re-used by others

abstract void setNextPoolable(T element)

abstract void setPooled(boolean isPooled)

示例:

private VelocityTracker mVelocityTracker;//生命变量

//在onTouchEvent(MotionEvent ev)中

if (mVelocityTracker == null) {

mVelocityTracker = VelocityTrackerobtain();//获得VelocityTracker类实例

}

mVelocityTrackeraddMovement(ev);//将事件加入到VelocityTracker类实例中

//判断当ev事件是MotionEventACTION_UP时:计算速率

final VelocityTracker velocityTracker = mVelocityTracker;

// 1000 provides pixels per second

velocityTrackercomputeCurrentVelocity(1, (float)001); //设置maxVelocity值为01时,速率大于001时,显示的速率都是001,速率小于001时,显示正常

Logi("test","velocityTraker"+velocityTrackergetXVelocity());

velocityTrackercomputeCurrentVelocity(1000); //设置units的值为1000,意思为一秒时间内运动了多少个像素

Logi("test","velocityTraker"+velocityTrackergetXVelocity());

大体的使用是这样的:

当你需要跟踪触摸屏事件的速度的时候,使用obtain()方法来获得VelocityTracker类的一个实例对象

在onTouchEvent回调函数中,使用addMovement(MotionEvent)函数将当前的移动事件传递给VelocityTracker对象

使用computeCurrentVelocity (int units)函数来计算当前的速度,使用 getXVelocity ()、 getYVelocity ()函数来获得当前的速度

1利用这种可以实现。

startActivityForResult(intent, requestCode)

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

2在Application里面写个变量,这样在所有activity里都能访问。

public class LauncherApplication extends Application

3用sharedpreference或数据库来保存。(不推荐)

先取的所有连接

NetworkInfo[] networkInfos = ConnectivityManagergetAllNetworkInfo();

对每一个networkInfo 判断

networkInfogetState() == NetworkInfoStateCONNECTED

判断哪个是正在连接着的

然后用

networkInfogetType()

获得 是 ConnectivityManagerTYPE_MOBILE 还是 TYPE_WIFI

获取android系统的连接服务可判断网络连接状态,代码如下

public class NetUtils{

public static boolean isNetworkConnected(Context context){

ConnectivityManager mConnectivityManager = (ConnectivityManager) contextgetSystemService(ContextCONNECTIVITY_SERVICE);

NetworkInfo[] infos = cmgetAllNetworkInfo();

for(NetworkInfo info:infos){

if(infoisAvailable()&&infoisConnected()){

return true;

}

}

return false;

}

}

NetworkInfo的isAvailable()和isConnected()有以下5种状态:

在WLAN设置界面

1,显示连接已保存,但标题栏没有,即没有实质连接上:isConnected()==false,isAvailable()=true

2,显示连接已保存,标题栏也有已连接上的图标:isConnected()==true,isAvailable()=true

3,选择不保存后:isConnected()==false,isAvailable()=true

4,选择连接,在正在获取IP地址时:isConnected()==false,isAvailable()=false

5,连接上后:isConnected()==true,isAvailable()=true

以上就是关于android 能判断当前网络是否连接,连接的是 wifi 还是 3g/4g全部的内容,包括:android 能判断当前网络是否连接,连接的是 wifi 还是 3g/4g、如何用java方式实现获取Android某个应用的启动消耗时间,cpu和内存消耗,GC,网络流量、Android如何较为精确获取到当前移动速度等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9637910.html

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

发表评论

登录后才能评论

评论列表(0条)

保存