0
私はここにhttps://freebieslearning.net/android-2/android-find-nearby-user/のソースコードを持っています。このソースコードは、登録された人物の位置とユーザーと登録ユーザーの距離をフェッチして表示します。どのようにデータに画像を追加するのかと思っていますので、データを取り込むときに画像もその中に含まれています。私はここにコードを貼り付けてみましょうMySQLサーバーから既存のAndroidコードにフェッチイメージを追加する方法
<?PHP
include_once("Connection.php");
$latitude = $_GET['latitude'];
$longitude = $_GET['longitude'];
$query = "select * from(SELECT name,latitude,longitude,round((((acos(sin((".$latitude."*pi()/180)) *
sin((`latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) *
cos(((".$longitude."- `longitude`)*pi()/180))))*180/pi())*60*1.1515*1.609344),1) as distance
FROM location) as temp order by distance";
$result = mysqli_query($conn, $query);
while (($row = mysqli_fetch_assoc($result)) == true) {
$data[] = $row;
}
echo json_encode($data);
?>
MyData.java:
package com.example.sumit.nearbyapp;
public class MyData {
String name;
double latitude, longitude, distance;
public MyData(String name, double latitude, double longitude, double distance) {
this.name = name;
this.distance = distance;
this.latitude = latitude;
this.longitude = longitude;
}
public double getDistance() {
return distance;
}
public void setDistance(double distance) {
this.distance = distance;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
}
package com.example.sumit.nearbyapp;
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder> {
private Context context;
private List<MyData> my_data;
public CustomAdapter(Context context, List<MyData> my_data) {
this.context = context;
this.my_data = my_data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.card,parent,false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.name.setText(my_data.get(position).getName().toString());
holder.distance.setText(Double.toString(my_data.get(position).getDistance()));
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String uri = String.format(Locale.ENGLISH, "http://maps.google.com/maps?daddr=%s,%s (%s)",
Double.toString(my_data.get(position).getLatitude()),
Double.toString(my_data.get(position).getLongitude()),my_data.get(position).getName());
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return my_data.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
public ImageView imageView;
public TextView distance;
public TextView name;
public ViewHolder(View itemView) {
super(itemView);
imageView = (ImageView) itemView.findViewById(R.id.map);
distance = (TextView)itemView.findViewById(R.id.distance);
name = (TextView)itemView.findViewById(R.id.name);
}
}
}
package com.example.sumit.nearbyapp;
public class MySingleton {
private static MySingleton mInstance;
private RequestQueue mRequestQueue;
private ImageLoader mImageLoader;
private static Context mCtx;
private MySingleton(Context context) {
mCtx = context;
mRequestQueue = getRequestQueue();
mImageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() {
private final LruCache<String, Bitmap> cache = new LruCache<String, Bitmap>(20);
@Override
public Bitmap getBitmap(String url) {
return cache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
cache.put(url, bitmap);
}
});
}
public static synchronized MySingleton getInstance(Context context) {
if (mInstance == null) {
mInstance = new MySingleton(context);
}
return mInstance;
}
public RequestQueue getRequestQueue() {
if (mRequestQueue == null) {
// getApplicationContext() is key, it keeps you from leaking the
// Activity or BroadcastReceiver if someone passes one in.
mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext());
}
return mRequestQueue;
}
public <T> void addToRequestQueue(Request<T> req) {
getRequestQueue().add(req);
}
public ImageLoader getImageLoader() {
return mImageLoader;
}
}
package com.example.sumit.nearbyapp;
public class MainActivity extends AppCompatActivity {
String latitude, longitude;
private RecyclerView recyclerView;
private LinearLayoutManager linearLayoutManager;
private CustomAdapter adapter;
private List<MyData> data_list;
private ProgressDialog pd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
GPSTracker gps = new GPSTracker(this);
pd = new ProgressDialog(MainActivity.this);
pd.setMessage("Loading . . . ");
if (gps.canGetLocation()) {
latitude = String.valueOf(gps.getLatitude());
longitude = String.valueOf(gps.getLongitude());
data_list = new ArrayList<>();
load_data_from_server();
linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
adapter = new CustomAdapter(this,data_list);
recyclerView.setAdapter(adapter);
} else {
gps.showSettingsAlert();
}
}
private void load_data_from_server() {
String url = "http://vga.ramstertech.com/loc/location.php?latitude="+latitude+"&longitude="+longitude+"";
pd.show();
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonarray = new JSONArray(response);
for(int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.getString("name");
Double latitude = jsonobject.getDouble("latitude");
Double longitude = jsonobject.getDouble("longitude");
Double distance = jsonobject.getDouble("distance");
MyData data = new MyData(name.toString(), latitude, longitude, distance);
data_list.add(data);
adapter.notifyDataSetChanged();
pd.hide();
}
} catch (JSONException e) {
e.printStackTrace();
pd.hide();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (error != null) {
Toast.makeText(getApplicationContext(), "Something went wrong.", Toast.LENGTH_LONG).show();
}
}
});
MySingleton.getInstance(getApplicationContext()).addToRequestQueue(stringRequest);
}
}
の作品を願っ誰かが私を助けることができます –