<shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#2ccc"></solid> <corners android:radius="30dp"/> </shape>
<TextView android:id="@+id/tv_location" android:layout_width="0dp" android:layout_weight="1" android:layout_height="match_parent" android:drawableLeft="@drawable/ic_place_black_24dp" android:drawableRight="@drawable/ic_keyboard_arrow_down_black_24dp" android:gravity="center" android:singleLine="true" android:text="北京八维研修学院" />
----LoginActivity package bwie.com.moni320180914.ui.activity; import android.Manifest; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v4.app.ActivityCompat; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.squareup.picasso.Picasso; import com.umeng.socialize.UMAuthListener; import com.umeng.socialize.UMShareAPI; import com.umeng.socialize.bean.SHARE_MEDIA; import java.util.Map; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import bwie.com.moni320180914.R; public class LoginActivity extends AppCompatActivity { @BindView(R.id.log_tou) ImageView logTou; @BindView(R.id.log_text) TextView logText; UMAuthListener authListener = new UMAuthListener() { /** * @desc 授权开始的回调 * @param platform 平台名称 */ @Override public void onStart(SHARE_MEDIA platform) { } /** * @desc 授权成功的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param data 用户资料返回 */ @Override public void onComplete(SHARE_MEDIA platform, int action, Map<String, String> data) { //uid //name //gender //iconurl String uid = data.get("uid"); final String name = data.get("name"); final String gender = data.get("gender"); final String iconurl = data.get("iconurl"); for (int i = 0; i < data.size(); i++) { String s = data.get(i); } Toast.makeText(LoginActivity.this, "成功了" + uid + "********" + name + "********" + gender + "********" + iconurl, Toast.LENGTH_LONG).show(); Intent intent = new Intent(); intent.putExtra("iconurl", iconurl); setResult(RESULT_OK, intent); finish(); } /** * @desc 授权失败的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 * @param t 错误原因 */ @Override public void onError(SHARE_MEDIA platform, int action, Throwable t) { Toast.makeText(LoginActivity.this, "失败:" + t.getMessage(), Toast.LENGTH_LONG).show(); } /** * @desc 授权取消的回调 * @param platform 平台名称 * @param action 行为序号,开发者用不上 */ @Override public void onCancel(SHARE_MEDIA platform, int action) { Toast.makeText(LoginActivity.this, "取消了", Toast.LENGTH_LONG).show(); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); ButterKnife.bind(this); if(Build.VERSION.SDK_INT>=23){ String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.CALL_PHONE,Manifest.permission.READ_LOGS,Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.SET_DEBUG_APP,Manifest.permission.SYSTEM_ALERT_WINDOW,Manifest.permission.GET_ACCOUNTS,Manifest.permission.WRITE_APN_SETTINGS}; ActivityCompat.requestPermissions(this,mPermissionList,123); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); } @OnClick({R.id.log_tou, R.id.log_text}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.log_tou: UMShareAPI.get(LoginActivity.this).getPlatformInfo(LoginActivity.this, SHARE_MEDIA.QQ, authListener); break; } } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { } }
---------mainactivity
package bwie.com.moni320180914.ui.activity; import android.Manifest; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.amap.api.location.AMapLocation; import com.amap.api.location.AMapLocationClient; import com.amap.api.location.AMapLocationClientOption; import com.amap.api.location.AMapLocationListener; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.gson.Gson; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import bwie.com.moni320180914.R; import bwie.com.moni320180914.data.bean.InfoBean; import bwie.com.moni320180914.di.IContract; import bwie.com.moni320180914.di.presenter.PresenterImpl; import bwie.com.moni320180914.ui.adapter.MainAdapters; public class MainActivity extends AppCompatActivity implements IContract.IView, AMapLocationListener { private static final int REQUST_CODE_LOGIN = 1000; @BindView(R.id.m_search) ImageView mSearch; @BindView(R.id.main_mao) ImageView mainMao; @BindView(R.id.reacycle_view) RecyclerView reacycleView; @BindView(R.id.et_search) EditText etSearch; @BindView(R.id.tv_location) TextView tvLocation; private IContract.IPersenter iPersenter; private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_WIFI_STATE}, 200); } initLocation(); ButterKnife.bind(this); iPersenter = new PresenterImpl(); iPersenter.AttData(this); // iPersenter.infoData(); iPersenter.infoPost("美食"); recyclerView = findViewById(R.id.reacycle_view); } @Override public void showData(final String msg) { Log.i("aa", "showData: " + msg); runOnUiThread(new Runnable() { @Override public void run() { Gson gson = new Gson(); InfoBean infoBean = gson.fromJson(msg, InfoBean.class); List<InfoBean.Pois> data = infoBean.getPois(); LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(layoutManager); MainAdapters mainAdapter = new MainAdapters(data, MainActivity.this); recyclerView.setAdapter(mainAdapter); } }); } @Override protected void onDestroy() { super.onDestroy(); iPersenter.DeleteData(this); } @OnClick({R.id.m_search, R.id.main_mao,R.id.tv_location}) public void onViewClicked(View view) { switch (view.getId()) { case R.id.m_search: String keywords = etSearch.getText().toString(); if (!TextUtils.isEmpty(keywords)) { iPersenter.infoPost(keywords); } // iPersenter.infoPost(); break; case R.id.main_mao: Intent intent = new Intent(MainActivity.this, LoginActivity.class); // startActivity(intent); startActivityForResult(intent, REQUST_CODE_LOGIN); break; case R.id.tv_location: mlocationClient.startLocation(); break; } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUST_CODE_LOGIN && resultCode == RESULT_OK) { String iconurl = data.getStringExtra("iconurl"); // Picasso.with(this).load(iconurl).into(mainMao); Glide.with(this).load(iconurl).apply(new RequestOptions().circleCrop()).into(mainMao); } } //声明mLocationOption对象 public AMapLocationClientOption mLocationOption = null; //声明mlocationClient对象 public AMapLocationClient mlocationClient; private void initLocation() { //初始化定位参数 mLocationOption = new AMapLocationClientOption(); //设置返回地址信息,默认为true mLocationOption.setNeedAddress(true); mlocationClient = new AMapLocationClient(this); //设置定位监听 mlocationClient.setLocationListener(this); //设置定位模式为高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); //设置定位间隔,单位毫秒,默认为2000ms mLocationOption.setInterval(10000); //设置定位参数 mlocationClient.setLocationOption(mLocationOption); // 此方法为每隔固定时间会发起一次定位请求,为了减少电量消耗或网络流量消耗, // 注意设置合适的定位时间的间隔(最小间隔支持为1000ms),并且在合适时间调用stopLocation()方法来取消定位请求 // 在定位结束后,在合适的生命周期调用onDestroy()方法 // 在单次定位情况下,定位无论成功与否,都无需调用stopLocation()方法移除请求,定位sdk内部会移除 //启动定位 } @Override public void onLocationChanged(AMapLocation amapLocation) { if (amapLocation != null) { if (amapLocation.getErrorCode() == 0) { //定位成功回调信息,设置相关消息 amapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见定位类型表 amapLocation.getLatitude();//获取纬度 amapLocation.getLongitude();//获取经度 amapLocation.getAccuracy();//获取精度信息 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = new Date(amapLocation.getTime()); df.format(date);//定位时间 String address = amapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。 String country = amapLocation.getCountry();//国家信息 amapLocation.getProvince();//省信息 amapLocation.getCity();//城市信息 amapLocation.getDistrict();//城区信息 amapLocation.getStreet();//街道信息 amapLocation.getStreetNum();//街道门牌号信息 amapLocation.getCityCode();//城市编码 amapLocation.getAdCode();//地区编码 // amapLocation.getAOIName();//获取当前定位点的AOI信息 //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 Log.e("AmapSuccess","address:" + address + ", country:" + country); Toast.makeText(this, "address:" + address + ", country:" + country, Toast.LENGTH_SHORT).show(); tvLocation.setText(address); } else { //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 Log.e("AmapError","location Error, ErrCode:" + amapLocation.getErrorCode() + ", errInfo:" + amapLocation.getErrorInfo()); } } } }