|
package com.electric.chargingpile.activity;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.os.Handler;
import androidx.appcompat.app.AlertDialog;
import android.text.Editable;
import android.text.Html;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.SimpleCursorAdapter;
import android.widget.TextView;
import android.widget.Toast;
import com.amap.api.maps.AMapUtils;
import com.amap.api.maps.model.LatLng;
import com.amap.api.services.core.PoiItem;
import com.amap.api.services.core.SuggestionCity;
import com.amap.api.services.help.Inputtips;
import com.amap.api.services.help.Tip;
import com.amap.api.services.poisearch.PoiResult;
import com.amap.api.services.poisearch.PoiSearch;
import com.amap.api.services.poisearch.PoiSearch.OnPoiSearchListener;
import com.electric.chargingpile.R;
import com.electric.chargingpile.application.MainApplication;
import com.electric.chargingpile.data.HistoryInfo;
import com.electric.chargingpile.data.PileData;
import com.electric.chargingpile.data.RecommendZhan;
import com.electric.chargingpile.manager.ProfileManager;
import com.electric.chargingpile.util.BarColorUtil;
import com.electric.chargingpile.util.DBOpenHandler;
import com.electric.chargingpile.util.DES3S;
import com.electric.chargingpile.util.JsonUtils;
import com.electric.chargingpile.util.Util;
import com.umeng.analytics.MobclickAgent;
import com.zhy.http.okhttp.OkHttpUtils;
import com.zhy.http.okhttp.callback.StringCallback;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import okhttp3.Call;
public class SearchActivity extends Activity implements OnClickListener, Inputtips.InputtipsListener, OnPoiSearchListener {
private TextView tvSearch;
private Toast toast = null;
private EditText etSearch;
private ImageView ivClear;
private ListView lvContent;
private SearchAdapter adapter;
private List<Map<String, String>> addressList = new ArrayList<Map<String, String>>();
private List<Map<String, String>> addressAllList = new ArrayList<Map<String, String>>();
private List<HistoryInfo> historyInfoList = new ArrayList<HistoryInfo>();
private HistoryInfo history;
private List<RecommendZhan> pointList = new ArrayList<>();
private List<RecommendZhan> pointFullList = new ArrayList<>();
private Map<String, String> map;
private View convertView = null;
InputMethodManager imm;
private LinearLayout ll_menu;
ListView historyList;
private PoiResult poiResult;// poi返回的结果
private int currentPage = 0;// 当前页面,从0开始计数
private PoiSearch.Query query;// Poi查询条件类
private PoiSearch poiSearch;// POI搜索
private String keyWord = "";// 要输入的poi搜索关键字
private static final String TAG = "SearchActivity";
private String gd_jing, gd_wei;
private View popupWindowView;
private PopupWindow popupWindow;
private Button cancleButton;
private TextView tvOne, tvTwo, tvThree;
private Double bd_lon, bd_lat, bd_jing, bd_wei;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
BarColorUtil.initStatusBarColor(SearchActivity.this);
initView();
}
private void initView() {
lvContent = (ListView) findViewById(R.id.lv_search_list);
lvContent.setDividerHeight(0);
historyList = (ListView) findViewById(R.id.lv_history_list);
tvSearch = (TextView) findViewById(R.id.tv_search);
tvSearch.setOnClickListener(this);
ivClear = (ImageView) findViewById(R.id.iv_search_clear);
ivClear.setOnClickListener(this);
etSearch = (EditText) findViewById(R.id.et_search);
etSearch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
DBOpenHandler db = new DBOpenHandler(SearchActivity.this, "");
Cursor c = db.query();
System.err.println(c.getCount());
if (c.getCount() <= 0) {
return;
}
String[] from = {"keyword", "type"};
int[] to = {R.id.search_name, R.id.search_address};
historyInfoList.clear();
while (c.moveToNext()) {
history = new HistoryInfo();
history.setIds(c.getString(c.getColumnIndex("keyword")));
history.setJing(c.getString(c.getColumnIndex("jing")));
history.setWei(c.getString(c.getColumnIndex("wei")));
historyInfoList.add(history);
}
SimpleCursorAdapter adapter = new SimpleCursorAdapter(SearchActivity.this, R.layout.history_item, c, from, to, 0);
historyList.setAdapter(adapter);
}
});
etSearch.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (TextUtils.isEmpty(s.toString().trim())) {
ivClear.setVisibility(View.GONE);
} else {
ivClear.setVisibility(View.VISIBLE);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
etSearch.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN) { // 点击搜索键进行搜索。
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
View view = getWindow().peekDecorView();
if (view != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
String s = etSearch.getText().toString().trim();
if (TextUtils.isEmpty(s)) {
Toast.makeText(SearchActivity.this, "搜索内容不能为空", Toast.LENGTH_SHORT).show();
addressList.clear();
addressAllList.clear();
historyList.setVisibility(View.VISIBLE);
lvContent.setVisibility(View.GONE);
} else {
keyWord = s;
doSearchQuery();
doPointNameSearchQuery();
lvContent.setVisibility(View.VISIBLE);
historyList.setVisibility(View.GONE);
System.out.println("hello www");
}
return true;
}
return false;
}
});
String search_address = ProfileManager.getInstance().getSearchAddress(this);
if (TextUtils.isEmpty(search_address)) {
etSearch.setText("");
etSearch.setSelection(etSearch.getText().length());
addressList.clear();
addressAllList.clear();
historyList.setVisibility(View.VISIBLE);
lvContent.setVisibility(View.GONE);
ivClear.setVisibility(View.GONE);
} else {
etSearch.setText(search_address);
keyWord = search_address;
doSearchQuery();
doPointNameSearchQuery();
lvContent.setVisibility(View.VISIBLE);
historyList.setVisibility(View.GONE);
ivClear.setVisibility(View.VISIBLE);
}
lvContent.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
View v = getWindow().peekDecorView();
if (v != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
historyList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
View v = getWindow().peekDecorView();
if (v != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
adapter = new SearchAdapter(this, addressList, pointList);
lvContent.setAdapter(adapter);
// 点击历史记录
historyList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent();
intent.putExtra("zhan_name", historyInfoList.get(position).getIds());
intent.putExtra("jing", historyInfoList.get(position).getJing());
intent.putExtra("wei", historyInfoList.get(position).getWei());
ProfileManager.getInstance().setSearchAddress(getApplicationContext(), historyInfoList.get(position).getIds());
setResult(101, intent);
finish();
View v = getWindow().peekDecorView();
if (v != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
});
lvContent.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
DBOpenHandler db = new DBOpenHandler(SearchActivity.this, "");
db.queryOne(etSearch.getText().toString());
ContentValues values = new ContentValues();
values.put("time", System.currentTimeMillis());
values.put("keyword", addressList.get(position).get("name"));
values.put("type", addressList.get(position).get("address"));
values.put("jing", addressList.get(position).get("jing"));
values.put("wei", addressList.get(position).get("wei"));
db.insert(values);
Cursor c = db.query();
System.err.println(c.getCount());
if (c.getCount() <= 0) {
return;
}
String[] from = {"keyword", "type"};
int[] to = {R.id.search_name, R.id.search_address};
SimpleCursorAdapter historyAdapter = new SimpleCursorAdapter(SearchActivity.this, R.layout.history_item, c, from, to, 0);
historyList.setAdapter(historyAdapter);
Intent intent = new Intent();
intent.putExtra("zhan_name", addressList.get(position).get("name"));
intent.putExtra("jing", addressList.get(position).get("jing"));
intent.putExtra("wei", addressList.get(position).get("wei"));
ProfileManager.getInstance().setSearchAddress(getApplicationContext(), addressList.get(position).get("name"));
setResult(101, intent);
View v = getWindow().peekDecorView();
if (v != null) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
finish();
}
});
try {
imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (!imm.isActive()) {
ll_menu.setVisibility(View.GONE);
}
} catch (Exception e) {
e.printStackTrace();
}
if (search_address.equals("")) {
lvContent.setVisibility(View.GONE);
historyList.setVisibility(View.VISIBLE);
}
DBOpenHandler db = new DBOpenHandler(SearchActivity.this, "");
Cursor c = db.query();
System.err.println(c.getCount());
if (c.getCount() <= 0) {
return;
}
historyInfoList.clear();
while (c.moveToNext()) {
history = new HistoryInfo();
history.setIds(c.getString(c.getColumnIndex("keyword")));
history.setJing(c.getString(c.getColumnIndex("jing")));
history.setWei(c.getString(c.getColumnIndex("wei")));
historyInfoList.add(history);
}
String[] from = {"keyword", "type"};
int[] to = {R.id.search_name, R.id.search_address};
final SimpleCursorAdapter adapter3 = new SimpleCursorAdapter(SearchActivity.this, R.layout.history_item, c, from, to, 0);
convertView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_clear, null);
historyList.addFooterView(convertView);
TextView tv_clear = (TextView) convertView.findViewById(R.id.tv_historyClear);
tv_clear.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(SearchActivity.this);
builder.setTitle("提示");
builder.setMessage("确认删除历史记录?");
builder.setCancelable(false);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DBOpenHandler db = new DBOpenHandler(SearchActivity.this, "");
db.delTable();
historyList.setVisibility(View.GONE);
adapter3.notifyDataSetChanged();
}
});
builder.setNegativeButton("取消", null);
builder.create().show();
}
});
historyList.setAdapter(adapter3);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_search:
if (imm.isActive()) {
View view = getWindow().peekDecorView();
if (view != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (MainMapActivity.ll_tuijian.getVisibility() == View.VISIBLE) {
MainMapActivity.ll_tuijian.setVisibility(View.GONE);
MainMapActivity.ll_map_control.setVisibility(View.VISIBLE);
MainMapActivity.ll_top_right.setVisibility(View.VISIBLE);
}
}
}, 500);
MainMapActivity.detailsBack = true;
finish();
break;
//界面搜索框内清空图标
case R.id.iv_search_clear:
ivClear.setVisibility(View.GONE);
etSearch.setText("");
addressList.clear();
addressAllList.clear();
adapter.notifyDataSetChanged();
lvContent.setVisibility(View.GONE);
historyList.setVisibility(View.VISIBLE);
break;
}
}
private void showTextToast(String msg) {
if (toast == null) {
toast = Toast.makeText(getApplicationContext(), msg, Toast.LENGTH_SHORT);
} else {
toast.setText(msg);
}
toast.show();
}
@Override
public void onGetInputtips(List<Tip> list, int i) {
}
@Override
public void onPoiSearched(PoiResult result, int rCode) {
if (rCode == 1000) {
if (result != null && result.getQuery() != null) {// 搜索poi的结果
if (result.getQuery().equals(query)) {// 是否是同一条
poiResult = result;
// 取得搜索到的poiitems有多少页
List<PoiItem> poisList = poiResult.getPois();// 取得第一页的poiitem数据,页数从数字0开始
List<SuggestionCity> suggestionCities = poiResult.getSearchSuggestionCitys();// 当搜索不到poiitem数据时,会返回含有搜索关键字的城市信息
if (poisList != null && poisList.size() > 0) {
addressList.clear();
addressAllList.clear();
try {
for (int i = 0; i < poisList.size(); i++) {
map = new HashMap<String, String>();
map.put("name", poisList.get(i).getTitle());
map.put("address", poisList.get(i).getSnippet());
map.put("jing", poisList.get(i).getLatLonPoint().getLongitude() + "");
map.put("wei", poisList.get(i).getLatLonPoint().getLatitude() + "");
map.put("url", "");
addressAllList.add(map);
}
for (Map<String, String> address : addressAllList) {
addressList.add(address);
if (addressList.size() >= 5) {
break;
}
}
if (addressList != null && addressList.size() > 0) {
runOnUiThread(new Runnable() {
@Override
public void run() {
adapter.notifyDataSetChanged();
}
});
}
} catch (Exception e) {
e.printStackTrace();
}
} else {
Toast.makeText(SearchActivity.this, "抱歉,未找到结果", Toast.LENGTH_SHORT).show();
addressList.clear();
addressAllList.clear();
adapter.notifyDataSetChanged();
}
}
} else {
}
} else {
}
}
@Override
public void onPoiItemSearched(PoiItem poiItem, int i) {
}
public class SearchAdapter extends BaseAdapter {
private Context context;
private List<Map<String, String>> list;
private List<RecommendZhan> pList;
public SearchAdapter(Context context, List<Map<String, String>> list, List<RecommendZhan> pointList) {
this.context = context;
this.list = list;
this.pList = pointList;
}
@Override
public int getCount() {
return list.size() + pointList.size();
}
@Override
public Object getItem(int position) {
if (position < list.size()) {
return list.get(position);
} else {
return pointList.get(position - list.size());
}
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
if (convertView == null) {
convertView = LayoutInflater.from(context).inflate(R.layout.item_search, null);
viewHolder = new ViewHolder();
viewHolder.address_item = convertView.findViewById(R.id.address_item);
viewHolder.point_item = convertView.findViewById(R.id.point_item);
viewHolder.name = convertView.findViewById(R.id.search_name);
viewHolder.address = convertView.findViewById(R.id.search_address);
viewHolder.address_header_title = convertView.findViewById(R.id.address_header_title);
viewHolder.query_all_addresses = convertView.findViewById(R.id.query_all_addresses);
viewHolder.point_header_title = convertView.findViewById(R.id.point_header_title);
viewHolder.query_all_points = convertView.findViewById(R.id.query_all_points);
viewHolder.zhan_name = convertView.findViewById(R.id.zhan_name);
viewHolder.red_paper_bag = convertView.findViewById(R.id.red_paper_bag);
viewHolder.score_img = convertView.findViewById(R.id.score_img);
viewHolder.score_text = convertView.findViewById(R.id.score_text);
viewHolder.distance = convertView.findViewById(R.id.distance);
viewHolder.zongjia_container = convertView.findViewById(R.id.zongjia_container);
viewHolder.zongjia = convertView.findViewById(R.id.zongjia);
viewHolder.charge_record_cnt = convertView.findViewById(R.id.charge_record_cnt);
viewHolder.comment_cnt = convertView.findViewById(R.id.comment_cnt);
viewHolder.times_line = convertView.findViewById(R.id.times_line);
viewHolder.fenshi_info_textview = convertView.findViewById(R.id.fenshi_info_textview);
viewHolder.iv_label_public = convertView.findViewById(R.id.iv_label_public);
viewHolder.iv_label_ground = convertView.findViewById(R.id.iv_label_ground);
viewHolder.iv_label_free_park = convertView.findViewById(R.id.iv_label_free_park);
viewHolder.payment_method = convertView.findViewById(R.id.payment_method);
viewHolder.recommend_nav = convertView.findViewById(R.id.recommend_nav);
viewHolder.window_tv_fast_free_label = convertView.findViewById(R.id.window_tv_fast_free_label);
viewHolder.window_tv_fast_free_num = convertView.findViewById(R.id.window_tv_fast_free_num);
viewHolder.window_tv_fast_total_num = convertView.findViewById(R.id.window_tv_fast_total_num);
viewHolder.window_tv_slow_free_label = convertView.findViewById(R.id.window_tv_slow_free_label);
viewHolder.window_tv_slow_free_num = convertView.findViewById(R.id.window_tv_slow_free_num);
viewHolder.window_tv_slow_total_num = convertView.findViewById(R.id.window_tv_slow_total_num);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}
if (position < list.size()) {
showAddressView(viewHolder, list.get(position), position);
} else {
RecommendZhan point = pList.get(position - list.size());
showPointView(viewHolder, point, position);
}
return convertView;
}
class ViewHolder {
LinearLayout address_item, point_item, zongjia_container;
TextView name, address, address_header_title, query_all_addresses;
TextView point_header_title, query_all_points, zhan_name, score_text, distance, zongjia,
charge_record_cnt, comment_cnt, fenshi_info_textview, iv_label_public, iv_label_ground,
iv_label_free_park, payment_method, window_tv_fast_free_label, window_tv_fast_free_num, window_tv_fast_total_num,
window_tv_slow_free_label, window_tv_slow_free_num, window_tv_slow_total_num;
ImageView red_paper_bag, score_img;
View times_line;
Button recommend_nav;
}
private void showAddressView(ViewHolder viewHolder, Map<String, String> item, int position) {
viewHolder.address_item.setVisibility(View.VISIBLE);
viewHolder.point_item.setVisibility(View.GONE);
String name = item.get("name");
String address = item.get("address");
name = name.replace(keyWord, "<font color=\"#1BB637\">" + keyWord + "</font>");
address = address.replace(keyWord, "<font color=\"#1BB637\">" + keyWord + "</font>");
viewHolder.name.setText(Html.fromHtml(name, Html.FROM_HTML_MODE_LEGACY));
viewHolder.address.setText(Html.fromHtml(address, Html.FROM_HTML_MODE_LEGACY));
if (position == 0) {
viewHolder.address_header_title.setVisibility(View.VISIBLE);
viewHolder.address_header_title.setText(keyWord + "相关目的地");
} else {
viewHolder.address_header_title.setVisibility(View.GONE);
}
if (position == list.size() - 1 && addressAllList.size() > 5) {
viewHolder.query_all_addresses.setVisibility(View.VISIBLE);
} else {
viewHolder.query_all_addresses.setVisibility(View.GONE);
}
viewHolder.query_all_addresses.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // 查看所有
// TODO by hyg add
}
});
}
private void showPointView(ViewHolder viewHolder, RecommendZhan point, int position) {
viewHolder.point_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), NewZhanDetailsActivity.class);
intent.putExtra("zhan_id", point.getId());
startActivity(intent);
}
});
viewHolder.address_item.setVisibility(View.GONE);
viewHolder.point_item.setVisibility(View.VISIBLE);
if (position == list.size()) {
viewHolder.point_header_title.setVisibility(View.VISIBLE);
viewHolder.point_header_title.setText(keyWord + "相关充电桩");
} else {
viewHolder.point_header_title.setVisibility(View.GONE);
}
if (position == list.size() + pList.size() - 1 && pointFullList.size() > 3) {
viewHolder.query_all_points.setVisibility(View.VISIBLE);
} else {
viewHolder.query_all_points.setVisibility(View.GONE);
}
viewHolder.query_all_points.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { // 查看全部站点
}
});
viewHolder.zhan_name.setText(point.getZhan_name());
if ("1".equals(point.getOwn_pay())) {
viewHolder.red_paper_bag.setVisibility(View.VISIBLE);
} else {
viewHolder.red_paper_bag.setVisibility(View.GONE);
}
viewHolder.red_paper_bag.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent_example = new Intent(getApplicationContext(), ExampleActivity.class);
intent_example.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent_example);
overridePendingTransition(0, 0);
}
});
showStarInfoView(viewHolder, point);
if ("0m".equals(point.getDistance())) {
viewHolder.distance.setText("未知");
} else {
viewHolder.distance.setText(point.getDistance());
}
if (point.getZongjia() == 0) {
viewHolder.zongjia_container.setVisibility(View.GONE);
} else {
viewHolder.zongjia_container.setVisibility(View.VISIBLE);
viewHolder.zongjia.setText(String.format("%.2f", point.getZongjia()));
}
if (point.getComment_cnt() == 0 || point.getCharge_record_cnt() == 0 && point.getComment_cnt() == 0) {
viewHolder.times_line.setVisibility(View.GONE);
} else {
viewHolder.times_line.setVisibility(View.VISIBLE);
}
if (point.getCharge_record_cnt() == 0) {
viewHolder.charge_record_cnt.setVisibility(View.GONE);
} else {
viewHolder.charge_record_cnt.setVisibility(View.VISIBLE);
if (point.getCharge_record_cnt() < 1000) {
viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() + "次充电成功");
} else if (point.getCharge_record_cnt() < 10000) {
viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() / 1000 + "k+次充电成功");
} else {
viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() / 10000 + "w+次充电成功");
}
}
if (point.getComment_cnt() == 0) {
viewHolder.comment_cnt.setVisibility(View.GONE);
} else {
viewHolder.comment_cnt.setVisibility(View.VISIBLE);
if (point.getComment_cnt() < 1000) {
viewHolder.comment_cnt.setText(point.getComment_cnt() + "次评论");
} else if (point.getComment_cnt() < 10000) {
viewHolder.comment_cnt.setText(point.getComment_cnt() / 1000 + "k+次评论");
} else {
viewHolder.comment_cnt.setText(point.getComment_cnt() / 10000 + "w+次评论");
}
}
if ("1".equals(point.getFenshi_is())) {
viewHolder.fenshi_info_textview.setText("");
ArrayList<PileData.FenshiInfoBean> fenshiList = (ArrayList<PileData.FenshiInfoBean>) JsonUtils.parseToObjectList(point.getFenshi_info(), PileData.FenshiInfoBean.class);
Calendar calendar = Calendar.getInstance();
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int totalMinutes = hours * 60 + minutes;
for (PileData.FenshiInfoBean bean : fenshiList) {
if (bean.getStartTotalMinutes() > totalMinutes) {
Double service_free = Double.valueOf(bean.getService_free());
Double charge_free = Double.valueOf(bean.getCharge_free());
viewHolder.fenshi_info_textview.setText(String.format("%s开始 %.2f元/度", bean.getStart(), service_free + charge_free));
break;
}
}
} else {
viewHolder.fenshi_info_textview.setText("");
}
viewHolder.iv_label_public.setText(point.getBelong_attribute());
viewHolder.iv_label_ground.setText("0".equals(point.getPark_location()) ? "地下" : "地上");
viewHolder.iv_label_free_park.setVisibility(point.getStop_cost().contains("免费") ? View.VISIBLE : View.GONE);
if ("1".equals(point.getOwn_pay())) {
viewHolder.payment_method.setText("可使用本APP扫码支付");
} else {
if ("".equals(point.getCharge_cost_way2())) {
viewHolder.payment_method.setText("暂无");
} else {
viewHolder.payment_method.setText(point.getCharge_cost_way2());
}
}
viewHolder.recommend_nav.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
recommendNav(point);
}
});
if (point.getFast_able_num() == null && point.getSlow_able_num() == null) {
viewHolder.window_tv_fast_free_label.setVisibility(View.GONE);
viewHolder.window_tv_fast_total_num.setVisibility(View.GONE);
viewHolder.window_tv_slow_free_label.setVisibility(View.GONE);
viewHolder.window_tv_slow_total_num.setVisibility(View.GONE);
viewHolder.window_tv_fast_free_num.setText("".equals(point.getFast_num()) ? "0" : point.getFast_num());
viewHolder.window_tv_slow_free_num.setText("".equals(point.getSlow_num()) ? "0" : point.getSlow_num());
} else {
viewHolder.window_tv_fast_free_label.setVisibility(View.VISIBLE);
viewHolder.window_tv_fast_total_num.setVisibility(View.VISIBLE);
viewHolder.window_tv_slow_free_label.setVisibility(View.VISIBLE);
viewHolder.window_tv_slow_total_num.setVisibility(View.VISIBLE);
viewHolder.window_tv_fast_free_num.setText(point.getFast_able_num());
viewHolder.window_tv_slow_free_num.setText(point.getSlow_able_num());
viewHolder.window_tv_fast_total_num.setText("".equals(point.getFast_num()) ? "0" : "/" + point.getFast_num());
viewHolder.window_tv_slow_total_num.setText("".equals(point.getSlow_num()) ? "0" : "/" + point.getSlow_num());
}
}
private void showStarInfoView(ViewHolder viewHolder, RecommendZhan point) {
String starStr = point.getStar();
double star = 0.0;
try {
star = Double.parseDouble(starStr);
} catch (NumberFormatException e) {
e.printStackTrace();
}
viewHolder.score_text.setText(String.format("%.1f分", star));
if (star == 0) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_0xing));
viewHolder.score_text.setText("暂无评分");
} else if (star > 0 && star < 1) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_05xing));
} else if (star >= 1 && star < 1.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_1xing));
} else if (star >= 1.5 && star < 2) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_15xing));
} else if (star >= 2 && star < 2.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_2xing));
} else if (star >= 2.5 && star < 3) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_25xing));
} else if (star >= 3 && star < 3.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_3xing));
} else if (star >= 3.5 && star < 4) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_35xing));
} else if (star >= 4 && star < 4.5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_4xing));
} else if (star >= 4.5 && star < 5) {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_45xing));
} else {
viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_5xing));
}
}
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPause(this);
}
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onResume(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm.isActive()) {
View view = getWindow().peekDecorView();
if (view != null) {
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
}
/**
* 开始进行poi搜索
*/
protected void doSearchQuery() {
currentPage = 0;
query = new PoiSearch.Query(keyWord, "", MainApplication.atCity);// 第一个参数表示搜索字符串,第二个参数表示poi搜索类型,第三个参数表示poi搜索区域(空字符串代表全国)
query.setPageSize(10);// 设置每页最多返回多少条poiitem
query.setPageNum(currentPage);// 设置查第一页
poiSearch = new PoiSearch(this, query);
poiSearch.setOnPoiSearchListener(this);
poiSearch.searchPOIAsyn();
}
private void doPointNameSearchQuery() {
double longitude = 0;
double latitude = 0;
if (MainApplication.center != null) {
longitude = MainApplication.center.longitude;
latitude = MainApplication.center.latitude;
}
LatLng center = new LatLng(latitude, longitude);
String url = MainApplication.url + "/zhannew/basic/web/index.php/name_search?city=" + MainApplication.atCity + "&poi_jing=" + longitude + "&poi_wei=" + latitude + "&version=" + MainApplication.current_code + "&zhan_name=" + keyWord;
OkHttpUtils.get().url(url).build().readTimeOut(30000).connTimeOut(30000).execute(new StringCallback() {
@Override
public void onError(Call call, Exception e) {
e.printStackTrace();
}
@Override
public void onResponse(String response) {
String rtnCode = JsonUtils.getKeyResult(response, "rtnCode");
if ("0".equals(rtnCode)) {
String data = JsonUtils.getKeyResult(response, "data");
String info_decode = "";
try {
info_decode = DES3S.decode(data);
} catch (Exception e) {
e.printStackTrace();
}
if (null != info_decode && !info_decode.equals("")) {
pointFullList.clear();
pointList.clear();
List<RecommendZhan> list = JsonUtils.parseToObjectList(info_decode, RecommendZhan.class);
if (list != null) {
for (RecommendZhan point : list) {
String wei = point.getPoi_wei().trim();
String jing = point.getPoi_jing().trim();
int position_jing = jing.length() - jing.indexOf(".") - 1;
int position_wei = wei.length() - wei.indexOf(".") - 1;
LatLng ll;
if (position_jing > 13 || position_wei > 13) {
ll = new LatLng(Double.parseDouble(wei), Double.parseDouble(jing));
} else {
double dwei = Double.parseDouble(wei);
double djing = Double.parseDouble(jing);
getGaode(djing, dwei);
ll = new LatLng(Double.parseDouble(gd_wei), Double.parseDouble(gd_jing));
}
double d = AMapUtils.calculateLineDistance(center, ll);
point.setDistance(Util.getDistance(d));
pointFullList.add(point);
}
for (RecommendZhan point : pointFullList) {
pointList.add(point);
if (pointList.size() >= 3) {
break;
}
}
if (pointList.size() > 0) {
adapter.notifyDataSetChanged();
}
}
}
}
}
});
}
private void getGaode(Double jing, Double wei) {
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
double gg_lon;
double gg_lat;
double x = jing - 0.0065, y = wei - 0.006;
double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
gg_lon = z * Math.cos(theta);
gd_jing = String.valueOf(gg_lon);
gg_lat = z * Math.sin(theta);
gd_wei = String.valueOf(gg_lat);
}
private void recommendNav(RecommendZhan rz) {
String wei = rz.getPoi_wei().trim();
String jing = rz.getPoi_jing().trim();
int position_jing = jing.length() - jing.indexOf(".") - 1;
int position_wei = wei.length() - wei.indexOf(".") - 1;
final LatLng ll;
if (position_jing > 13 || position_wei > 13) {
ll = new LatLng(Double.parseDouble(wei), Double.parseDouble(jing));
} else {
double dwei = Double.parseDouble(wei);
double djing = Double.parseDouble(jing);
getGaode(djing, dwei);
ll = new LatLng(Double.parseDouble(gd_wei), Double.parseDouble(gd_jing));
}
if (!isAvilible(getApplicationContext(), "com.baidu.BaiduMap") &&
!isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
Intent intent = new Intent(getApplication(), BasicNaviActivity.class);
intent.putExtra("start_jing", MainApplication.center.longitude + "");
intent.putExtra("start_wei", MainApplication.center.latitude + "");
intent.putExtra("stop_jing", ll.longitude + "");
intent.putExtra("stop_wei", ll.latitude + "");
startActivity(intent);
} else {
if (MainApplication.center != null) {
LayoutInflater inflater1 = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
popupWindowView = inflater1.inflate(R.layout.item_selectmap, null);
popupWindow = new PopupWindow(popupWindowView,
ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT,
true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
// 设置PopupWindow的弹出和消失效果
popupWindow.setAnimationStyle(R.style.popupAnimation);
LinearLayout ll_tvTwo = (LinearLayout) popupWindowView.findViewById(R.id.ll_tvTwo);
if (!isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
ll_tvTwo.setVisibility(View.GONE);
}
LinearLayout ll_tvOne = (LinearLayout) popupWindowView.findViewById(R.id.ll_tvOne);
if (!isAvilible(getApplicationContext(), "com.baidu.BaiduMap")) {
ll_tvOne.setVisibility(View.GONE);
}
cancleButton = (Button) popupWindowView.findViewById(R.id.cancleButton);
cancleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
popupWindow.dismiss();
}
});
tvThree = (TextView) popupWindowView.findViewById(R.id.tvThree);
tvThree.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplication(), BasicNaviActivity.class);
intent.putExtra("start_jing", MainApplication.center.longitude + "");
intent.putExtra("start_wei", MainApplication.center.latitude + "");
intent.putExtra("stop_jing", ll.longitude + "");
intent.putExtra("stop_wei", ll.latitude + "");
startActivity(intent);
popupWindow.dismiss();
}
});
tvOne = (TextView) popupWindowView.findViewById(R.id.tvOne);
tvOne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = null;
int position_jing = rz.getPoi_jing().length() - rz.getPoi_jing().indexOf(".") - 1;
int position_wei = rz.getPoi_wei().length() - rz.getPoi_wei().indexOf(".") - 1;
if (position_jing > 13 || position_wei > 13) {
getBaidu1(Double.parseDouble(rz.getPoi_jing()), Double.parseDouble(rz.getPoi_wei()));
} else {
bd_jing = Double.parseDouble(rz.getPoi_jing());
bd_wei = Double.parseDouble(rz.getPoi_wei());
}
getBaidu(MainApplication.center.longitude, MainApplication.center.latitude);
try {
String s = "intent://map/direction?" +
"origin=" + bd_lat + "," + bd_lon + "&" +
"destination=" + bd_wei + "," + bd_jing +
"&mode=driving&" +
"src=充电桩#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end";
intent = Intent.getIntent(s);
} catch (URISyntaxException e) {
e.printStackTrace();
}
startActivity(intent);
popupWindow.dismiss();
}
});
tvTwo = (TextView) popupWindowView.findViewById(R.id.tvTwo);
tvTwo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
Intent intent4 = new Intent("android.intent.action.VIEW",
android.net.Uri.parse("androidamap://route?sourceApplication=amap&slat=" + MainApplication.center.latitude + "&slon=" + MainApplication.center.longitude + "&sname=我的位置&dlat=" + ll.latitude + "&dlon=" + ll.longitude + "&dname=" + rz.getZhan_name() + "&dev=0&m=0&t=2"));
intent4.setPackage("com.autonavi.minimap");
startActivity(intent4);
popupWindow.dismiss();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplication(), "请您确认是否安装高德地图APP", Toast.LENGTH_SHORT).show();
}
}
});
popupWindow.showAtLocation(cancleButton, Gravity.CENTER, 0, 0);
} else {
Toast.makeText(getApplication(),
"没有定位到您的当前位置", Toast.LENGTH_SHORT)
.show();
}
}
}
private boolean isAvilible(Context context, String packageName) {
//获取packagemanager
final PackageManager packageManager = context.getPackageManager();
//获取所有已安装程序的包信息
List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
//用于存储所有已安装程序的包名
List<String> packageNames = new ArrayList<String>();
//从pinfo中将包名字逐一取出,压入pName list中
if (packageInfos != null) {
for (int i = 0; i < packageInfos.size(); i++) {
String packName = packageInfos.get(i).packageName;
packageNames.add(packName);
}
}
//判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
return packageNames.contains(packageName);
}
private void getBaidu(Double jing, Double wei) {
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
double x = jing;
double y = wei;
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
bd_lon = z * Math.cos(theta) + 0.0065;
bd_lat = z * Math.sin(theta) + 0.006;
}
private void getBaidu1(Double jing, Double wei) {
double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
double x = jing;
double y = wei;
double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
bd_jing = z * Math.cos(theta) + 0.0065;
bd_wei = z * Math.sin(theta) + 0.006;
}
}
|