我有这个功能哪个网络连接
public boolean isNetworkConnected() {
ConnectivityManager conManager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = conManager.getActiveNetworkInfo();
if (netInfo == null) {
// There are no active networks.
return false;
} else {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我试图让它静态,以便我可以在它抛出的每个活动中使用它:
无法从类型中对非静态方法getSystemService(String)进行静态引用
我不想每次都创建类的对象.
我正在使用这段代码来检测Internet连接状态的变化.它适用于Android <5.0,但在API 21上:
intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY)
Run Code Online (Sandbox Code Playgroud)
总是假的.如何使此代码在Android 5.0上运行?
我的BroadcastReceiver:
public class NetworkStateReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if(intent.getExtras()!=null) {
final ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
final NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if(networkInfo != null && networkInfo.isConnectedOrConnecting()) {
Log.d("receiver test", "detected on");
}
}
Log.d("receiver test", Boolean.toString(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY)));
if(intent.getExtras().getBoolean(ConnectivityManager.EXTRA_NO_CONNECTIVITY, Boolean.FALSE)) {
Log.d("receiver test", "detected off");
}
}
}
Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-internet android-5.0-lollipop
我正在使用改造来从服务器获取和发布数据.但是,如果我的手机在应用程序中间失去了互联网连接,那么我会看到如下错误:
05-10 08:12:05.559 29369-29400/? D/Retrofit? java.net.UnknownHostException: Unable to resolve host "my.server.com": No address associated with hostname
at java.net.InetAddress.lookupHostByName(InetAddress.java:394)
at java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)
at java.net.InetAddress.getAllByName(InetAddress.java:214)
Run Code Online (Sandbox Code Playgroud)
我想优雅地处理这个错误.我想抓住异常并显示像"没有互联网连接"这样的祝酒消息.
我正在尝试这样的代码,但我得到一个错误: java.net.UnknownHostException is never thrown in the try block
try {
isTokenValid = MyManager.INSTANCE.getService().validate();
}
catch (RetrofitError cause) {
Response r = cause.getResponse();
if (r != null && r.getStatus() == 403) {
isTokenValid = false;
}
}
catch (UnknownHostException exception) {
Toast.makeText(getBaseContext(), "No internet connection", Toast.LENGTH_SHORT).show();
}
Run Code Online (Sandbox Code Playgroud) 我的应用程序中有以下代码...
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("/system/bin/ping -c 1 8.8.8.8");
return process.waitFor();
Run Code Online (Sandbox Code Playgroud)
...我发现它在某些设备(例如Motorola G)上工作(返回0)但在其他设备(例如Galaxy S3)上不起作用(返回2).我已经检查了Galaxy S3设备,它肯定有一个"/ system/bin/ping"文件,当然我已经确定它确实连接到了互联网.
任何人都有任何想法为什么命令可能无法在某些设备上工作......以及我可以做些什么来让它工作?
我试图了解MediaCodec如何用于硬件解码.
我在android内部的知识非常有限.
以下是我的发现:
有一个xml文件,代表android系统中的编解码器细节.
device/ti/omap3evm/media_codecs.xml for an example.
Run Code Online (Sandbox Code Playgroud)
这意味着,如果我们使用Media Codec从Java Application创建编解码器
MediaCodec codec = MediaCodec.createDecoderByType(type);
Run Code Online (Sandbox Code Playgroud)
应该在xml文件的帮助下找出各自的编码器.
我在做什么?
我试图找出代码的哪一部分正在读取xml并根据给定的'type'找到编解码器.
1)应用层:
MediaCodec codec = MediaCodec.createDecoderByType(type);
Run Code Online (Sandbox Code Playgroud)
2)MediaCodec.java - > [ frameworks/base/media/java/android/media/MediaCodec.java ]
public static MediaCodec createDecoderByType(String type) {
return new MediaCodec(type, true /* nameIsType */, false /* encoder */);
}
Run Code Online (Sandbox Code Playgroud)
3)
private MediaCodec(
String name, boolean nameIsType, boolean encoder) {
native_setup(name, nameIsType, encoder); --> JNI Call.
}
Run Code Online (Sandbox Code Playgroud)
4)JNI实现 - > [ frameworks/base/media/jni/android_media_MediaCodec.cpp ]
static void android_media_MediaCodec_native_setup (..) {
.......
const char *tmp = …Run Code Online (Sandbox Code Playgroud) 我正在开发一个图像库应用程序,其中应用程序从Internet检索图像.
所以我想提示一个对话框,要求用户连接到互联网或退出应用程序.
向用户显示WiFi和运营商网络选项.
我最近购买了索尼xperia P,但它无法检测到ad-hoc网络.经过一些谷歌搜索后我才知道android不支持ad-hoc网络,我没有修改/ system/bin/wpa_supplicant文件,这样它也可以显示ad-hoc网络.我在github上发现了很多修改过的文件,但我不知道应该使用哪一个.文件wpa_supplicant设备是特定的还是特定于Android版本的?我的Android版本是4.0.4(索尼xperia P),任何人都可以给我我的手机可以使用的确切文件.
android android-networking android-wifi android-wireless android-internet
我想知道下面的方法是否检查我是否都连接到网络,并且实际上也可以连接到互联网.
不只是连接到不允许我访问互联网的网络?
public boolean isNetworkAvailable() {
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = manager.getActiveNetworkInfo();
boolean isAvailable = false;
if (networkInfo != null && networkInfo.isConnected()) {
isAvailable = true;
}
return isAvailable;
}
Run Code Online (Sandbox Code Playgroud)
我想,确实如此,但我不是百分百肯定.
谢谢
我正在尝试找到一种方法来检查我当前的 WiFi 连接是否有互联网。
如果我也打开了移动数据,那么使用通常的 ping 选项或尝试访问某个站点将不起作用,因为它会因此返回 true。
android ×10
android-internet ×10
android-wifi ×3
connectivity ×1
java ×1
opencore ×1
openmax ×1
ping ×1
stagefright ×1