package com.jacky.compatible.launcher.views;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Canvas;
import android.graphics.Typeface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Handler;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.jacky.launcher.R;
public class TitleView extends RelativeLayout {
private RelativeLayout layout;
private View view;
private final Context context;
private Typeface typeface;
private TextView tvTime, tvDate;
private ImageView imgNetWorkState;
private final Handler timeHandle = new Handler();
private final Runnable timeRun = new Runnable() {
public void run() {
setTvTimeText(TimeUtil.getTime());
setTvDateDate(TimeUtil.getDate());
timeHandle.postDelayed(this, 1000);
}
};
private final BroadcastReceiver wifiChange = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
WifiManager wifiManager = (WifiManager) context
.getSystemService(context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo.getBSSID() != null) {
// wifi信号强度
int signalLevel = WifiManager.calculateSignalLevel(
wifiInfo.getRssi(), 4);
if (signalLevel == 0) {
imgNetWorkState.setImageDrawable(context.getResources()
.getDrawable(R.drawable.wifi_1));
} else if (signalLevel == 1) {
imgNetWorkState.setImageDrawable(context.getResources()
.getDrawable(R.drawable.wifi_2));
} else if (signalLevel == 2) {
imgNetWorkState.setImageDrawable(context.getResources()
.getDrawable(R.drawable.wifi_3));
} else if (signalLevel == 3) {
imgNetWorkState.setImageDrawable(context.getResources()
.getDrawable(R.drawable.network_state_on));
}
}
}
};
private final BroadcastReceiver mConnReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
boolean noConnectivity = intent.getBooleanExtra(
ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);
String reason = intent
.getStringExtra(ConnectivityManager.EXTRA_REASON);
boolean isFailover = intent.getBooleanExtra(
ConnectivityManager.EXTRA_IS_FAILOVER, false);
NetworkInfo currentNetworkInfo = (NetworkInfo) intent
.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
NetworkInfo otherNetworkInfo = (NetworkInfo) intent
.getParcelableExtra(ConnectivityManager.EXTRA_OTHER_NETWORK_INFO);
if (currentNetworkInfo.isConnected()
&& currentNetworkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
imgNetWorkState.setImageDrawable(context.getResources()
.getDrawable(R.drawable.network_state_on));
} else if (currentNetworkInfo.isConnected()
&& currentNetworkInfo.getType() == ConnectivityManager.TYPE_ETHERNET) {
imgNetWorkState.setImageDrawable(context.getResources()
.getDrawable(R.drawable.networkstate_ethernet));
} else if (!currentNetworkInfo.isConnected()) {
imgNetWorkState.setImageDrawable(context.getResources()
.getDrawable(R.drawable.networkstate_off));
}
}
};
public TitleView(Context context) {
super(context);
this.context = context;
initTitleView();
}
public TitleView(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
initTitleView();
}
public void initTitleView() {
view = LayoutInflater.from(context).inflate(R.layout.titleview, this, true);
layout = (RelativeLayout) view.findViewById(R.id.home_title);
tvTime = (TextView) view.findViewById(R.id.title_bar_hour);
tvDate = (TextView) view.findViewById(R.id.title_bar_date);
imgNetWorkState = (ImageView) view.findViewById(R.id.title_bar_network_state);
typeface = Typeface.createFromAsset(context.getAssets(),
"font/helvetica_neueltpro_thex.otf");
tvTime.setTypeface(typeface);
tvDate.setTypeface(typeface);
timeHandle.post(timeRun);
imgNetWorkState = (ImageView) this.findViewById(R.id.title_bar_network_state);
context.registerReceiver(mConnReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));
context.registerReceiver(wifiChange, new IntentFilter(WifiManager.RSSI_CHANGED_ACTION));
}
public void setTvTimeText(String text) {
tvTime.setText(text);
}
public void setTvDateDate(String text) {
tvDate.setText(text);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
context.unregisterReceiver(mConnReceiver);
context.unregisterReceiver(wifiChange);
}
}