package io.evercam.connect;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.bugsense.trace.BugSenseHandler;
import java.util.Locale;
import io.evercam.connect.db.Camera;
import io.evercam.connect.db.CameraOperation;
import io.evercam.connect.net.NetInfo;
import io.evercam.network.discovery.MacAddress;
import io.evercam.network.discovery.NetworkInfo;
public class RouterActivity extends Activity
{
private NetInfo netInfo;
private Context ctxt;
private CameraOperation cameraOperation;
private TextView external_ip;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_router);
EvercamDiscover.sendScreenAnalytics(this, getString(R.string.screen_router));
TextView router_ip = (TextView) findViewById(R.id.routerip_detail);
TextView router_model = (TextView) findViewById(R.id.routermodel_detail);
external_ip = (TextView) findViewById(R.id.externalip_detail);
TextView router_mac = (TextView) findViewById(R.id.routermac_detail);
TextView router_netmask = (TextView) findViewById(R.id.netmask_detail);
TextView router_upnp = (TextView) findViewById(R.id.routerUpnp_detail);
TextView device_title = (TextView) findViewById(R.id.device_title);
TextView device_ip = (TextView) findViewById(R.id.deviceIP_detail);
TextView device_mac = (TextView) findViewById(R.id.deviceMAC_detail);
LinearLayout routerModelLayout = (LinearLayout) findViewById(R.id.routermodel_layout);
ctxt = getApplicationContext();
netInfo = new NetInfo(ctxt);
cameraOperation = new CameraOperation(ctxt);
if(!netInfo.getGatewayIp().equals(NetInfo.EMPTY_IP))
{
router_ip.setText(netInfo.getGatewayIp());
router_mac.setText(MacAddress.getByIpLinux(netInfo.getGatewayIp()).toUpperCase
(Locale.UK));
}
try
{
displayExternalIP();
router_netmask.setText(netInfo.getNetmaskIp());
Camera camera = cameraOperation.getCamera(netInfo.getGatewayIp(), netInfo.getSsid());
// show model if exists
if(camera.getModel() != null && !camera.getModel().isEmpty())
{
routerModelLayout.setVisibility(View.VISIBLE);
router_model.setText(camera.getModel());
}
// upnp status
if(camera.getUpnp() == 1)
{
router_upnp.setText(R.string.enabled);
}
else
{
router_upnp.setText(R.string.disabled);
}
device_title.setText(this.getResources().getString(R.string.networkInterface) +
netInfo.getInterfaceName());
device_ip.setText(netInfo.getLocalIp());
device_mac.setText(netInfo.getMacAddress().toUpperCase(Locale.UK));
}
catch(Exception e)
{
BugSenseHandler.sendException(e);
}
Button b = (Button) findViewById(R.id.button_routerweb);
b.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
if(!netInfo.getGatewayIp().equals(NetInfo.EMPTY_IP))
{
String url = "http://" + netInfo.getGatewayIp() + "/";
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri.parse(url);
intent.setData(content_url);
startActivity(intent);
}
else
{
Toast.makeText(ctxt, "Router is not avaliable.", Toast.LENGTH_SHORT).show();
}
}
});
}
private void displayExternalIP()
{
new AsyncTask<Void, Void, String>()
{
@Override
protected String doInBackground(Void... params)
{
return NetworkInfo.getExternalIP();
}
@Override
protected void onPostExecute(String externalIp)
{
if(externalIp != null)
{
external_ip.setText(externalIp);
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
}