充电桩app代码

WelcomeActivity.java 30KB

    package com.electric.chargingpile.activity; import android.Manifest; import android.annotation.TargetApi; import android.app.Activity; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Handler; import android.os.Message; import androidx.annotation.NonNull; import androidx.viewpager.widget.ViewPager; import androidx.appcompat.app.AlertDialog; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.Toast; import com.alibaba.fastjson.JSON; import com.amap.api.maps.MapsInitializer; import com.andview.refreshview.utils.Utils; import com.blankj.utilcode.util.CacheUtils; import com.blankj.utilcode.util.EmptyUtils; import com.blankj.utilcode.util.LogUtils; import com.blankj.utilcode.util.StringUtils; import com.electric.chargingpile.BuildConfig; import com.electric.chargingpile.R; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.AdDetail; import com.electric.chargingpile.data.OperatorData; import com.electric.chargingpile.manager.ProfileManager; import com.electric.chargingpile.util.BarColorUtil; import com.electric.chargingpile.util.DES3; import com.electric.chargingpile.util.JsonUtils; import com.electric.chargingpile.util.OkHttpUtil; import com.electric.chargingpile.view.ViewPagerAdapter; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.squareup.okhttp.Request; import com.squareup.okhttp.Response; import com.umeng.analytics.MobclickAgent; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.StringCallback; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.Socket; import java.net.URL; import java.net.URLEncoder; import java.security.MessageDigest; import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; import cn.jpush.android.api.JPushInterface; import okhttp3.Call; import pub.devrel.easypermissions.AfterPermissionGranted; import pub.devrel.easypermissions.EasyPermissions; public class WelcomeActivity extends Activity implements OnClickListener, EasyPermissions.PermissionCallbacks { private static final String TAG = "WelcomeActivity"; private ViewPager viewPager; private List<View> views; private ImageView img_welcome; private View one, two, three, four; private RelativeLayout rl_welcome; private TextView androidd; Bitmap bitmap; private ImageView enter; private String imgUrl = "", app_version = ""; String img = ""; String url = ""; private Socket socket; private Timer mTimer; private int count = 0; private LinearLayout ll_1; public static List<AdDetail> list_ad = new ArrayList<AdDetail>(); public static List<OperatorData> ll = new ArrayList<OperatorData>(); public static String canCost = ""; private static final int RC_CAMERA_PERM = 123; private static final int RC_SAVE_PERM = 124; private static final String MAP_FILE_PATH = getPath(Environment.getExternalStorageDirectory() + "/" + "cdz_map"); private ImageView oneIv, twoIv, threeIv, fourIv; private Handler handler = new Handler() { // 主线程通过这个方法处理消息 @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: try { JSONArray jsonArray = new JSONArray(msg.obj.toString()); JSONObject jsonObj = new JSONObject(jsonArray.get(0).toString()); img = jsonObj.getString("img"); } catch (JSONException e) { e.printStackTrace(); } break; case 3: Toast.makeText(getApplication(), "服务器处理错误", Toast.LENGTH_SHORT).show(); break; case 9: try { String data = JsonUtils.getKeyResult(msg.obj.toString(), "data"); String ad_major = JsonUtils.getKeyResult(data, "ad_major"); if (EmptyUtils.isNotEmpty(ad_major)) { MainApplication.haveActivity = true; MainApplication.ad_major = ad_major; img = JsonUtils.getKeyResult(ad_major, "img"); url = JsonUtils.getKeyResult(ad_major, "url"); String content = JsonUtils.getKeyResult(ad_major, "content"); String icon = JsonUtils.getKeyResult(ad_major, "icon"); String title = JsonUtils.getKeyResult(ad_major, "title"); String is_dui = JsonUtils.getKeyResult(ad_major, "is_dui"); if (is_dui.equals("1")) { MainApplication.current_url = url; } dealOperatorData(); imgUrl = MainApplication.url + "/zhannew//uploadfile/" + img; if (!imgUrl.toString().equals("")) { Intent intent = new Intent(getApplication(), HomeAdActivity.class); intent.putExtra("imgUrl", imgUrl); intent.putExtra("url", url); intent.putExtra("content", content); intent.putExtra("icon", icon); intent.putExtra("title", title); intent.putExtra("is_dui", is_dui); startActivity(intent); finish(); overridePendingTransition(0, 0); } else { new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(WelcomeActivity.this, MainMapActivity.class)); finish(); } }, 2000); } } else { getOperatorData(); } String ad = JsonUtils.getKeyResult(data, "ad"); String ad_detail = JsonUtils.getKeyResult(data, "ad_detail"); if (EmptyUtils.isNotEmpty(ad_detail)) { MainApplication.list_addetail = JsonUtils.parseToObjectList(ad_detail, AdDetail.class); } String huodonglabel = JsonUtils.getKeyResult(data, "huodonglabel"); String levellabel = JsonUtils.getKeyResult(data, "levellabel"); if (null == levellabel) { String level = CacheUtils.getInstance().getString("levellabel"); if (level != null) { levellabel = level; } else { levellabel = getResources().getString(R.string.app_level_label); LogUtils.e("本地读取"); } } CacheUtils.getInstance().put("levellabel", levellabel); MainApplication.level_one = JsonUtils.getKeyResult(levellabel, "1"); MainApplication.level_two = JsonUtils.getKeyResult(levellabel, "2"); MainApplication.level_three = JsonUtils.getKeyResult(levellabel, "3"); MainApplication.level_four = JsonUtils.getKeyResult(levellabel, "4"); MainApplication.level_five = JsonUtils.getKeyResult(levellabel, "5"); if (EmptyUtils.isNotEmpty(huodonglabel)) { com.alibaba.fastjson.JSONArray array = JSON.parseArray(huodonglabel); if (array.size() > 0) { String s = array.getJSONObject(0).toString(); MainApplication.huodonglabel = JsonUtils.getKeyResult(s, "meg"); } } if (EmptyUtils.isEmpty(ad)) { new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(WelcomeActivity.this, MainMapActivity.class)); finish(); } }, 1000); } com.alibaba.fastjson.JSONArray jsonArray = JSON.parseArray(ad); if (EmptyUtils.isNotEmpty(jsonArray) && jsonArray.size() > 0) { String welcome_ad = jsonArray.getJSONObject(0).toString(); img = JsonUtils.getKeyResult(welcome_ad, "img"); url = JsonUtils.getKeyResult(welcome_ad, "url"); String content = JsonUtils.getKeyResult(welcome_ad, "content"); String icon = JsonUtils.getKeyResult(welcome_ad, "icon"); String title = JsonUtils.getKeyResult(welcome_ad, "title"); String is_dui = JsonUtils.getKeyResult(welcome_ad, "is_dui"); String advertiser = JsonUtils.getKeyResult(welcome_ad, "advertiser"); if (is_dui.equals("1")) { MainApplication.current_url = url; } imgUrl = MainApplication.url + "/zhannew//uploadfile/" + img; if (!imgUrl.toString().equals("")) { Intent intent = new Intent(getApplication(), HomeAdActivity.class); intent.putExtra("imgUrl", imgUrl); intent.putExtra("url", url); intent.putExtra("content", content); intent.putExtra("icon", icon); intent.putExtra("title", title); intent.putExtra("is_dui", is_dui); intent.putExtra("advertiser", advertiser); startActivity(intent); finish(); overridePendingTransition(0, 0); } else { new Handler().postDelayed(new Runnable() { @Override public void run() { startActivity(new Intent(WelcomeActivity.this, MainMapActivity.class)); finish(); } }, 2000); } } } catch (Exception e) { e.printStackTrace(); } break; default: break; } } }; private static String getPath(String path) { File f = new File(path); if (!f.exists()) { f.mkdirs(); } return f.getAbsolutePath(); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_welcome); BarColorUtil.initStatusBarColor(WelcomeActivity.this); androidd = (TextView) findViewById(R.id.android); ll_1 = (LinearLayout) findViewById(R.id.ll_1); getVersion(); MapsInitializer.sdcardDir = MAP_FILE_PATH; mTimer = new Timer(); if (ProfileManager.getInstance().getGuide(this)) { saveTask(); } else { cameraTask(); androidd.setVisibility(View.GONE); ll_1.setVisibility(View.GONE); viewPager = (ViewPager) findViewById(R.id.viewpager); viewPager.setVisibility(View.VISIBLE); views = new ArrayList<View>(); one = LayoutInflater.from(this).inflate(R.layout.viewpager_guide_one, null); two = LayoutInflater.from(this).inflate(R.layout.viewpager_guide_two, null); three = LayoutInflater.from(this).inflate(R.layout.viewpager_guide_three, null); four = LayoutInflater.from(this).inflate(R.layout.viewpager_guide_four, null); enter = (ImageView) four.findViewById(R.id.bt_enter); enter.setOnClickListener(this); views.add(one); views.add(two); views.add(three); views.add(four); viewPager.setAdapter(new ViewPagerAdapter(views)); viewPager.setCurrentItem(0); } } public void getVersion() { try { PackageManager manager = getApplication().getPackageManager(); PackageInfo info = manager.getPackageInfo(getApplication().getPackageName(), 0); app_version = info.versionName; androidd.setText("For Android V" + app_version); } catch (Exception e) { e.printStackTrace(); } } private void setTimerTasks() { mTimer.schedule(new TimerTask() { @Override public void run() { count++; Log.e("count==", count + ""); if (count == 6) { startActivity(new Intent(WelcomeActivity.this, MainMapActivity.class)); finish(); mTimer.cancel(); count = 0; } } }, 0, 1000/* 表示1000毫秒之後,每隔1000毫秒執行一次 */); } public void eteinit(final String params) { setTimerTasks(); new Thread(new Runnable() { @Override public void run() { try { // 创建Socket String host = ""; if (MainApplication.url.contains("cdz.evcharge.cc")) { host = "cdz.evcharge.cc"; } else { host = "59.110.68.162"; } socket = new Socket(host, 9503); // 向服务器发送消息 PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); out.println(params); // out.println("{\"fun\":\"getcity\"}"); // 接收来自服务器的消息 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg = br.readLine(); String token = msg; int time = (int) (System.currentTimeMillis() / 1000); MainMapActivity.cha = time - Integer.parseInt(msg); String Token = getMD5(String.valueOf((System.currentTimeMillis() / 1000 - MainMapActivity.cha) / 10) + "qwerty"); StringBuffer initParams = new StringBuffer(); initParams.append("{\"fun\":\"init\",\"timer\":\"" + Token + "\""); initParams.append(",\"w\":\"" + Utils.getScreenWidth(WelcomeActivity.this) + "\""); initParams.append(",\"h\":\"" + Utils.getScreenHeight(WelcomeActivity.this) + "\""); initParams.append(",\"version_name\":\"" + BuildConfig.VERSION_NAME + "\""); initParams.append(",\"version_code\":\"" + BuildConfig.VERSION_CODE + "\""); initParams.append(",\"os\":\"android " + Build.VERSION.RELEASE + "\""); // 操作系统及版本 initParams.append(",\"brand\":\"" + Build.BRAND + "\""); // 品牌 initParams.append(",\"model\":\"" + Build.MODEL + "\""); // 型号 initParams.append("}"); ete2(initParams.toString()); } catch (Exception e) { e.printStackTrace(); } } }).start(); } public void ete2(final String params) { new Thread(new Runnable() { @Override public void run() { try { // 创建Socket String host = ""; if (MainApplication.url.contains("cdz.evcharge.cc")) { host = "cdz.evcharge.cc"; } else { host = "59.110.68.162"; } socket = new Socket(host, 9503); // IP:10.14.114.127,端口54321 // 向服务器发送消息 PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true); out.println(params); // 接收来自服务器的消息 BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream())); String msg = br.readLine(); if (msg != null) { Message mes = new Message(); mes.obj = msg; mes.what = 9; handler.sendMessage(mes); mTimer.cancel(); } } catch (Exception e) { e.printStackTrace(); } } }).start(); } public static String getMD5(String content) { try { MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(content.getBytes()); return getHashString(digest); } catch (Exception e) { e.printStackTrace(); } return null; } private static String getHashString(MessageDigest digest) { StringBuilder builder = new StringBuilder(); for (byte b : digest.digest()) { builder.append(Integer.toHexString((b >> 4) & 0xf)); builder.append(Integer.toHexString(b & 0xf)); } return builder.toString().toLowerCase(); } private Drawable loadImageFromNetwork(String imageUrl) { Drawable drawable = null; try { // 可以在这里通过文件名来判断,是否本地有此图片 drawable = Drawable.createFromStream(new URL(imageUrl).openStream(), "adout.jpg"); Message msg = new Message(); msg.obj = drawable; msg.what = 19; handler.sendMessage(msg); } catch (IOException e) { Log.d("test", e.getMessage()); } if (drawable == null) { Log.d("test", "null drawable"); } else { Log.d("test", "not null drawable"); } return drawable; } public void saveBitmap(Bitmap mBitmap) { String dir_path = Environment.getExternalStorageDirectory() + File.separator + "d1ev/"; File directory = new File(dir_path); File f = new File(dir_path, "welcome_pic"); try { if (!directory.exists()) { directory.mkdir();//没有目录先创建目录 } f.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block } FileOutputStream fOut = null; try { fOut = new FileOutputStream(f); } catch (Exception e) { e.printStackTrace(); } mBitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut); try { fOut.flush(); } catch (IOException e) { e.printStackTrace(); } try { fOut.close(); } catch (IOException e) { e.printStackTrace(); } } private void getStartPic() { new Thread(new Runnable() { @Override public void run() { String url = null; try { long appTime1 = System.currentTimeMillis() / 1000; long updatetime = appTime1 - 7200; String token = String.valueOf(updatetime); String replace = URLEncoder.encode(DES3.encode(token)); url = MainApplication.url + "/zhannew/basic/web/index.php/ad/get?timer=" + replace; } catch (Exception e) { e.printStackTrace(); } submitPic(url); } }).start(); } private void submitPic(String sms) { Request request = new Request.Builder().url(sms).build(); Response response = null; try { if (request == null) { Message msg = new Message(); msg.what = 3; handler.sendMessage(msg); return; } response = OkHttpUtil.execute(request); if (response.code() == 200) { String json = ""; try { json = response.body().string(); Message msg = new Message(); msg.obj = json; msg.what = 1; handler.sendMessage(msg); } catch (Exception e) { e.printStackTrace(); Message msg = new Message(); msg.what = 3; handler.sendMessage(msg); } } } catch (Exception e) { e.printStackTrace(); Message msg = new Message(); msg.what = 3; handler.sendMessage(msg); } } @Override protected void onResume() { super.onResume(); MobclickAgent.onResume(this); JPushInterface.onResume(this); } @Override protected void onPause() { super.onPause(); MobclickAgent.onPause(this); JPushInterface.onPause(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.guideone: viewPager.setCurrentItem(1); break; case R.id.guidetwo: viewPager.setCurrentItem(2); break; case R.id.guidethree: viewPager.setCurrentItem(3); case R.id.bt_enter: startActivity(new Intent(this, MainMapActivity.class)); finish(); break; } } private void dealOperatorData() { String operator = ProfileManager.getInstance().getKeyOperator(getApplicationContext()); String localOperators = ""; if (StringUtils.isEmpty(operator)) { localOperators = getResources().getString(R.string.app_operator_list); } else { localOperators = operator; } Gson gson = new Gson(); ll = gson.fromJson(localOperators, new TypeToken<List<OperatorData>>() { }.getType()); for (int i = 0; i < ll.size(); i++) { if (ll.get(i).getStatus().equals("1")) { canCost += ll.get(i).getName() + ","; } } } /** * 获取运营商信息 */ private void getOperatorData() { String url = MainApplication.url + "/zhannew/basic/web/index.php/suppiler/suppiler-list"; OkHttpUtils.get().url(url).build().execute(new StringCallback() { @Override public void onError(Call call, Exception e) { } @Override public void onResponse(String response) { String code = JsonUtils.getKeyResult(response, "code"); if (code.equals("200")) { String data = JsonUtils.getKeyResult(response, "data"); ProfileManager.getInstance().setAppOperator(getApplicationContext(), data); Gson gson = new Gson(); ll = gson.fromJson(data, new TypeToken<List<OperatorData>>() { }.getType()); for (int i = 0; i < ll.size(); i++) { if (ll.get(i).getStatus().equals("1")) { canCost += ll.get(i).getName() + ","; } } } } }); } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); // EasyPermissions handles the request result. EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this); } @Override public void onPermissionsGranted(int requestCode, List<String> perms) { for (String s : perms) { if (s.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { new Handler().postDelayed(new Runnable() { @Override public void run() { eteinit("{\"fun\":\"timer\"}"); } }, 1000); } break; } } @Override public void onPermissionsDenied(int requestCode, List<String> perms) { for (String s : perms) { if (s.equals(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { AlertDialog.Builder builder = new AlertDialog.Builder(WelcomeActivity.this); builder.setMessage("充电桩想要获取您的相关权限,是否允许?"); builder.setCancelable(false); builder.setPositiveButton("去设置", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { EasyPermissions.requestPermissions( WelcomeActivity.this, "充电桩想要获取您的相关权限,是否允许?", RC_SAVE_PERM, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE); } }); builder.create().show(); } break; } } @AfterPermissionGranted(RC_CAMERA_PERM) public void cameraTask() { if (isPermissionOK()) { } else { // Ask for one permission EasyPermissions.requestPermissions( this, "充电桩想要获取您的相关权限,是否允许?", RC_CAMERA_PERM, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE); } } @AfterPermissionGranted(RC_SAVE_PERM) public void saveTask() { if (isSavePermissionOK()) { new Handler().postDelayed(new Runnable() { @Override public void run() { eteinit("{\"fun\":\"timer\"}"); } }, 1000); // Have permission, do the thing! } else { // Ask for one permission EasyPermissions.requestPermissions( this, "充电桩想要获取您的相关权限,是否允许?", RC_CAMERA_PERM, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE); } } private boolean isPermissionOK() { return EasyPermissions.hasPermissions(this, Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_PHONE_STATE ); } private boolean isSavePermissionOK() { return EasyPermissions.hasPermissions(this, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE ); } public static void DeleteFile(File file) { if (file.exists() == false) { return; } else { if (file.isFile()) { file.delete(); return; } if (file.isDirectory()) { File[] childFile = file.listFiles(); if (childFile == null || childFile.length == 0) { file.delete(); return; } for (File f : childFile) { DeleteFile(f); } file.delete(); } } } }