package pl.pwr.smartkill.tools;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.io.StringWriter;
import java.io.Writer;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.text.NumberFormat;
import pl.pwr.smartkill.SKApplication;
import com.googlecode.androidannotations.annotations.App;
import com.googlecode.androidannotations.annotations.EBean;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
@EBean
public class Misc {
@App
SKApplication app;
//PASSWORDS
public static String generateSha(String password){
String out ="";
MessageDigest md;
try {
md = MessageDigest.getInstance("SHA-512");
md.update(password.getBytes());
byte[] mb = md.digest();
out = "";
for (int i = 0; i < mb.length; i++) {
byte temp = mb[i];
String s = Integer.toHexString(new Byte(temp));
while (s.length() < 2) {
s = "0" + s;
}
s = s.substring(s.length() - 2);
out += s;
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
throw new RuntimeException("No Such Algorithm");
}
return out;
}
//INTERNET
public void checkInternet(Context ctx){
NetworkInfo info = ((ConnectivityManager)ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();
if (info==null || !info.isConnectedOrConnecting()) {
app.setOnline(false);
}else{
app.setOnline(true);
}
}
//GPS
public static String getDistanceString(float distM) {
if(distM < 1000)
return (int)distM + " m";
else if(distM < 10000) {
float dist100m = distM / 1000;
NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(1);
return nf.format(dist100m) + " km";
} else {
return (int)(distM / 1000) + " km";
}
}
//STREAMS
public static void CopyStream(InputStream is, OutputStream os)
{
final int buffer_size=1024;
try
{
byte[] bytes=new byte[buffer_size];
for(;;)
{
int count=is.read(bytes, 0, buffer_size);
if(count==-1)
break;
os.write(bytes, 0, count);
}
}
catch(Exception ex){}
}
public static String convertStreamToString(Reader reader){
Writer writer = new StringWriter();
char[] buffer = new char[1024];
try {
int n;
while ((n = reader.read(buffer)) != -1) {
writer.write(buffer, 0, n);
}
} catch(Exception e){
}
return writer.toString();
}
}