您的位置:首页 > 移动开发 > Android开发

Android-系统服务

2016-05-09 17:21 471 查看
目标效果:











点击图示按钮,可以根据提示内容进行判断网络是否连接,开关WIFI,获取音量值和获取进程包名。

1.activity_main.xml页面放置所有的Button控件。

activity_main.xml页面:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<Button
android:id="@+id/btNetWork"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:text="判断网络是否连接" />

<Button
android:id="@+id/btChangeWIFI"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/btNetWork"
android:text="开关WIFI" />

<Button
android:id="@+id/btGetVoice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/btChangeWIFI"
android:text="获取系统音量" />

<Button
android:id="@+id/btGetPackagename"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_below="@+id/btGetVoice"
android:text="获取当前进程包名" />

</RelativeLayout>


2.MainActivity.java页面处理获取各种系统服务内容。
MainActivity.java页面:
package com.example.systemservice;

import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{

private Button btNetWork,btChangeWIFI,btGetVoice,btGetPackagename;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*另一种方式绑定xml页面*/
LayoutInflater inflater=(LayoutInflater) MainActivity.this.getSystemService(LAYOUT_INFLATER_SERVICE);
View view=inflater.inflate(R.layout.activity_main,null);
setContentView(view);

getId();
bindClick();
}

private void getId() {
btNetWork=(Button) findViewById(R.id.btNetWork);
btChangeWIFI=(Button) findViewById(R.id.btChangeWIFI);
btGetVoice=(Button) findViewById(R.id.btGetVoice);
btGetPackagename=(Button) findViewById(R.id.btGetPackagename);
}

private void bindClick() {
btNetWork.setOnClickListener(this);
btChangeWIFI.setOnClickListener(this);
btGetVoice.setOnClickListener(this);
btGetPackagename.setOnClickListener(this);
}

@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btNetWork:
if(isNetWorkConnected(MainActivity.this)==true){
Toast.makeText(MainActivity.this,"网络已经连接",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this,"网络未连接",Toast.LENGTH_SHORT).show();
}
break;
case R.id.btChangeWIFI:
WifiManager wifiManager=(WifiManager) MainActivity.this.getSystemService(WIFI_SERVICE);//返回WIFI管理器
if(wifiManager.isWifiEnabled()){//如果当前网络打开
wifiManager.setWifiEnabled(false);//关闭WIFI
Toast.makeText(MainActivity.this,"WIFI已经关闭",Toast.LENGTH_SHORT).show();
}else{
wifiManager.setWifiEnabled(true);//关闭WIFI
Toast.makeText(MainActivity.this,"WIFI已经打开",Toast.LENGTH_SHORT).show();
}
break;
case R.id.btGetVoice:
AudioManager audioManager=(AudioManager) MainActivity.this.getSystemService(AUDIO_SERVICE);//返回音量管理器
int max=audioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);//获取系统音量最大值
int current=audioManager.getStreamVolume(AudioManager.STREAM_RING);//获取当前铃声音量
Toast.makeText(MainActivity.this,"系统最大音量为:"+max+",当前铃声音量为:"+current,Toast.LENGTH_SHORT).show();
break;
case R.id.btGetPackagename:
ActivityManager activityManager=(ActivityManager) MainActivity.this.getSystemService(ACTIVITY_SERVICE);//返回当前程序运行状态
String pachageName=activityManager.getRunningTasks(1).get(0).topActivity.getPackageName();//得到包名
Toast.makeText(MainActivity.this,"当前运行的Activity的包名为:"+pachageName,Toast.LENGTH_SHORT).show();

break;
}
}
/*判断网络是否连接*/
public boolean isNetWorkConnected(Context context){
if(context!=null){
ConnectivityManager connecivityManager= (ConnectivityManager) context.getSystemService(CONNECTIVITY_SERVICE);//返回连接管理器
NetworkInfo netWorkInfo=connecivityManager.getActiveNetworkInfo();//获取当前网络的活动状态
if(netWorkInfo!=null){
return netWorkInfo.isAvailable();
}
}
return false;
}
}


3.当程序涉及到危险性动作时,需要获取权限,这里的判断网络连接等都需要添加权限。



4.添加好权限运行就显示目标效果了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: