package com.roboo.like.google.fragments; import java.io.DataOutputStream; import net.dynamicandroid.listview.DynamicScrollView; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.CheckedTextView; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; import android.widget.TextView; import android.widget.Toast; import com.roboo.like.google.BaseActivity; import com.roboo.like.google.GoogleApplication; import com.roboo.like.google.R; import com.roboo.like.google.WIFIActivity; import com.roboo.like.google.view.switchbutton.SwitchButton; /*** * 设置Fragment * * @author bo.li 2014-7-21 下午5:40:54 TODO */ @SuppressLint("NewApi") public class SettingsFragment extends BaseFragment { private DynamicScrollView mScrollView; /** 获取WIFI信息 */ private TextView mTvWifi; /** 去应用市场给程序评分 */ private TextView mTvAppGrade; /** 测试获取系统最高权限 */ private TextView mTvRoot; /** 只显示Android资讯的TextView */ private CheckedTextView mCtvAndroid; /** 公交番号准确查询 */ private CheckedTextView mCtvBus; /**类似IOS的SwitchButton切换按钮*/ private SwitchButton mSBtnSwitch; /**提示SwitchButton的开关*/ private TextView mTvSwitch; // {{创建SettingsFragment实例方法体 /** * 创建一个SettingsFragment实例 * * @return SettingsFragment实例 */ public static SettingsFragment newInstance() { SettingsFragment fragment = new SettingsFragment(); return fragment; } // }} // {{ onCreateView方法体 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = null; if (null == savedInstanceState) { view = inflater.inflate(R.layout.fragment_settings, null);// TODO initView(view); } return view; } // }} // {{ initView 方法体 private void initView(View view) { mScrollView = (DynamicScrollView) view.findViewById(R.id.dsv_scrollview); mCtvAndroid = (CheckedTextView) view.findViewById(R.id.ctv_android); mCtvBus = (CheckedTextView) view.findViewById(R.id.ctv_bus); mTvAppGrade = (TextView) view.findViewById(R.id.tv_app_grade); mTvRoot = (TextView) view.findViewById(R.id.tv_root); mTvWifi = (TextView) view.findViewById(R.id.tv_wifi); mTvSwitch = (TextView) view.findViewById(R.id.tv_switch); mSBtnSwitch = (SwitchButton) view.findViewById(R.id.sbtn_switch); } // }} initView 方法体 public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); init(); setListener(); } private void init() { mCtvAndroid.setChecked(GoogleApplication.mIsOnlyAndroid); mCtvBus.setChecked(GoogleApplication.mIsExactBus); } private void setListener() { OnclickListenerImpl onclickListenerImpl = new OnclickListenerImpl(); mCtvAndroid.setOnClickListener(onclickListenerImpl); mCtvBus.setOnClickListener(onclickListenerImpl); mTvRoot.setOnClickListener(onclickListenerImpl); mTvAppGrade.setOnClickListener(onclickListenerImpl); mTvWifi.setOnClickListener(onclickListenerImpl); mTvSwitch.setOnClickListener(onclickListenerImpl); OnCheckedChangeListenerImpl onCheckedChangeListenerImpl = new OnCheckedChangeListenerImpl(); mSBtnSwitch.setOnCheckedChangeListener(onCheckedChangeListenerImpl); } private class OnCheckedChangeListenerImpl implements OnCheckedChangeListener { public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked) { mTvSwitch.setText("仿IOS切换按钮 开"); } else { mTvSwitch.setText("仿IOS切换按钮 关"); } } } private class OnclickListenerImpl implements OnClickListener { @Override public void onClick(View v) { BaseActivity baseActivity = (BaseActivity) getActivity(); switch (v.getId()) { case R.id.ctv_android: boolean isChecked = mCtvAndroid.isChecked(); mCtvAndroid.setChecked(!isChecked); GoogleApplication.mIsOnlyAndroid = !isChecked; baseActivity.getSharedPreferences().edit().putBoolean(BaseActivity.PREF_ONLY_ANDROID, !isChecked).commit(); break; case R.id.ctv_bus: boolean isBusChecked = mCtvBus.isChecked(); mCtvBus.setChecked(!isBusChecked); GoogleApplication.mIsExactBus = !isBusChecked; baseActivity.getSharedPreferences().edit().putBoolean(BaseActivity.PREF_EXACT_BUS, !isBusChecked).commit(); break; case R.id.tv_root:// 请求Root权限 boolean hasRoot = hasRootPermission(); if (hasRoot) { Toast.makeText(getActivity(), "手机已经Root", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(getActivity(), "手机还没有Root", Toast.LENGTH_SHORT).show(); } break; case R.id.tv_app_grade:// 给程序打分 grade(getActivity(), "com.roboo.explorer"); break; case R.id.tv_wifi:// 获取WIFI信息 wifiInfo(); break; case R.id.tv_switch://切换按钮开关 changeSwitch(); break; default: break; } } } /**切换状态*/ public void changeSwitch() { if(mSBtnSwitch.isChecked()) { mSBtnSwitch.setChecked(false); mTvSwitch.setText("仿IOS切换按钮 关"); } else { mSBtnSwitch.setChecked(true); mTvSwitch.setText("仿IOS切换按钮 开"); } } private void wifiInfo() { WIFIActivity.actionWIFI(getActivity()); // WifiManager mWifiManager = (WifiManager) getActivity().getSystemService(Context.WIFI_SERVICE); // WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); // System.out.println(wifiInfo.getSSID() + " " + wifiInfo.getIpAddress() + " " +wifiInfo.getLinkSpeed() // +" " + wifiInfo.getMacAddress() + " " + wifiInfo.getNetworkId() // +" " + wifiInfo.getRssi() + " " + wifiInfo.getBSSID()); // List<ScanResult> data = mWifiManager.getScanResults(); // if(null != data) // { // for(ScanResult scanResult : data) // { // System.out.println("无线网络名称 = "+ scanResult.SSID // +" capabilities = " +scanResult.capabilities // +" frequency = " +scanResult.frequency // +" level = " +scanResult.level // +" timestamp = " +scanResult.timestamp // +" describeContents = " +scanResult.describeContents() // +" BSSID = " +scanResult.BSSID // ); // } // } } /*** * 去应用市场给程序打分 * * @param context * 应用程序Context * @param packageName * 应用程序的包名称 */ private void grade(Context context, String packageName) { Intent intent = new Intent(Intent.ACTION_VIEW); String uriString = "market://details?id=" + packageName; intent.setData(Uri.parse(uriString)); context.startActivity(intent); } /** * 应用程序请求获取最高权限,即Root权限 * * @return true 获取Root权限成功 或者 false 获取Root权限失败 */ public static boolean hasRootPermission() { Process process = null; DataOutputStream os = null; boolean rooted = true; try { process = Runtime.getRuntime().exec("su"); os = new DataOutputStream(process.getOutputStream()); os.writeBytes("exit\n"); os.flush(); process.waitFor(); if (process.exitValue() != 0) { rooted = false; } } catch (Exception e) { rooted = false; } finally { if (os != null) { try { os.close(); process.destroy(); } catch (Exception e) {} } } return rooted; } }