Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

完成了LocationActivity界面 #12

Merged
merged 6 commits into from
Jun 27, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 8 additions & 5 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,20 @@

<!-- Recording -->
<uses-feature android:name="android.hardware.camera" />

<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application
android:name="com.getyourlocation.app.client.GYLApp"
android:name=".GYLApp"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="com.getyourlocation.app.client.activity.HomeActivity"
android:name=".activity.HomeActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden">
<intent-filter>
Expand All @@ -36,15 +37,15 @@
</intent-filter>
</activity>
<activity
android:name="com.getyourlocation.app.client.activity.SensorNetworkActivity"
android:name=".activity.SensorNetworkActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name="com.getyourlocation.app.client.activity.CollectDataActivity"
android:name=".activity.CollectDataActivity"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
android:name="com.getyourlocation.app.client.activity.LocalizationActivity"
android:name=".activity.LocalizationActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity
Expand All @@ -55,6 +56,8 @@
android:name="com.getyourlocation.app.client.activity.IndoorMapActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateAlwaysHidden" />
<activity android:name=".activity.testActivity" />
<activity android:name=".util.LocationUtil"></activity>
</application>

</manifest>
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ public class Constant {
public static final String URL_API_PRODUCT = URL_CLOUD_SERVER + "/api/product";
public static final String URL_API_UPLOAD = URL_CLOUD_SERVER + "/api/upload";
public static final String URL_API_LOCALIZATION = URL_CLOUD_SERVER + "/api/localization";
public static final String URL_API_SHOPLOCATION = URL_CLOUD_SERVER + "/api/shop-location";

public static final String FILENAME_MAP = "map.png";
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.getyourlocation.app.client.activity;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.getyourlocation.app.client.Constant;
Expand All @@ -17,25 +20,57 @@
public class IndoorMapActivity extends AppCompatActivity {
private static final String TAG = "IndoorMapActivity";
private TextView infoTxt;
private final static int REQUEST_CODE=1;
private MapView mapView;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_indoor_map);
infoTxt = (TextView) findViewById(R.id.indoorMap_infoTxt);
MapView mapView = (MapView) findViewById(R.id.indoorMap_mapView);
mapView = (MapView) findViewById(R.id.indoorMap_mapView);
showLocation(652, 684);
Button locationBtn = (Button) findViewById(R.id.indoorMap_location_btn);
locationBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.setClass(IndoorMapActivity.this, testActivity.class);
//intent.putExtra("str", "Intent Demo");
startActivityForResult(intent, REQUEST_CODE);
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode==REQUEST_CODE)
{
if (resultCode==testActivity.RESULT_CODE)
{
Bundle bundle=data.getExtras();
float x = bundle.getFloat("x");
float y = bundle.getFloat("y");
showLocation(x, y);
}
}
}

private void showLocation(float x, float y)
{
try {
mapView.initNewMap(getAssets().open(Constant.FILENAME_MAP), 1, 0, new Position(652, 684));
mapView.initNewMap(getAssets().open(Constant.FILENAME_MAP), 1, 0, new Position(x, y));
} catch (IOException e) {
e.printStackTrace();
}
mapView.updateMyLocation(new Position(652, 684));
mapView.updateMyLocation(new Position(x, y));
mapView.setOnRealLocationMoveListener(new OnRealLocationMoveListener() {
@Override
public void onMove(Position position) {
infoTxt.setText(position.toString());
}
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,72 @@
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.getyourlocation.app.client.Constant;
import com.getyourlocation.app.client.R;

import com.getyourlocation.app.client.util.CommonUtil;
import com.getyourlocation.app.client.util.NetworkUtil;
import java.io.IOException;

import sysu.mobile.limk.library.MapView;
import sysu.mobile.limk.library.OnRealLocationMoveListener;
import sysu.mobile.limk.library.Position;


/**
* TODO 实现定位功能
*/
public class LocalizationActivity extends AppCompatActivity {
private static final String TAG = "LocalizationActivity";
private static final String TAG = "IndoorMapActivity";
private TextView infoTxt;
private final static int REQUEST_CODE=1;
private MapView mapView;

private NetworkUtil networkUtil;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_localization);
Button testBtn = (Button) findViewById(R.id.loc_test_btn);
testBtn.setOnClickListener(new View.OnClickListener() {
setContentView(R.layout.activity_indoor_map);
infoTxt = (TextView) findViewById(R.id.indoorMap_infoTxt);
mapView = (MapView) findViewById(R.id.indoorMap_mapView);
showLocation(652, 684);
Button locationBtn = (Button) findViewById(R.id.indoorMap_location_btn);
locationBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CommonUtil.showToast(LocalizationActivity.this, "Hello!");
startActivity(new Intent(LocalizationActivity.this, PhotoActivity.class));
Intent intent=new Intent();
intent.setClass(LocalizationActivity.this, testActivity.class);
//intent.putExtra("str", "Intent Demo");
startActivityForResult(intent, REQUEST_CODE);
}
});
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode==REQUEST_CODE)
{
if (resultCode==testActivity.RESULT_CODE)
{
Bundle bundle=data.getExtras();
float x = bundle.getFloat("x");
float y = bundle.getFloat("y");
showLocation(x, y);
}
}
}

private void showLocation(float x, float y)
{
try {
mapView.initNewMap(getAssets().open(Constant.FILENAME_MAP), 1, 0, new Position(x, y));
} catch (IOException e) {
e.printStackTrace();
}
mapView.updateMyLocation(new Position(x, y));
mapView.setOnRealLocationMoveListener(new OnRealLocationMoveListener() {
@Override
public void onMove(Position position) {
infoTxt.setText(position.toString());
}
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,19 @@
import android.widget.Button;
import android.widget.FrameLayout;

import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.error.VolleyError;
import com.android.volley.request.SimpleMultiPartRequest;
import com.getyourlocation.app.client.Constant;
import com.getyourlocation.app.client.R;
import com.getyourlocation.app.client.util.CommonUtil;
import com.getyourlocation.app.client.util.NetworkUtil;
import com.getyourlocation.app.client.widget.CameraPreview;

import org.json.JSONArray;
import org.json.JSONObject;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
Expand All @@ -29,12 +39,19 @@ public class PhotoActivity extends AppCompatActivity {
private Camera camera;
private CameraPreview cameraPreview;
private Button captureBtn;
private NetworkUtil networkUtil;
private float [][] imgLocation = new float[3][2];
private boolean [] imgCapturedStatus = new boolean[3];
private boolean [] imgUploadStatus = new boolean[3];
private int imgCaptured;
private int imgUpload;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_photo);
initCamera();
initCaptureBtn();
initData();
}
@Override
protected void onResume() {
Expand Down Expand Up @@ -134,4 +151,52 @@ public static File getOutputMediaFile(int type){

return mediaFile;
}
private void initData()
{
for (int i = 0; i < 3; i++) {
imgCapturedStatus[i] = false;
imgUploadStatus[i] = false;
}
imgCaptured = 0;
imgUpload = 0;
}
/** upload single image */
private void uploadImage(String imgFilename)
{
if (imgFilename == null || imgFilename.isEmpty()) {
CommonUtil.showToast(PhotoActivity.this, "imgFilename is not correct!");
return;
}
SimpleMultiPartRequest req = new SimpleMultiPartRequest(Request.Method.POST, Constant.URL_API_SHOPLOCATION,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, response);
CommonUtil.showToast(PhotoActivity.this, "Upload succeed!");
try {
JSONObject jsonObj = new JSONObject(response);
if (imgUpload >= imgCaptured) return;
for (int i = 0; i < 3; i++) {
if (imgLocation[i][0] == -1) {
imgLocation[i][0] = (float)jsonObj.get("x");
imgLocation[i][1] = (float)jsonObj.get("y");
imgUpload++;
break;
}
}
} catch (Exception e) {
Log.e(TAG, "", e);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "", error);
CommonUtil.showToast(PhotoActivity.this, "Upload failed! Code:" + error.networkResponse.statusCode);
}
});
req.addFile("img", imgFilename);
//req.addMultipartParam("ext", "text/plain", imgFilename.substring(imgFilename.indexOf(".") + 1));
networkUtil.addReq(req);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ public void onClick(View v) {
return;
}
permitUpload = false;
SimpleMultiPartRequest req = new SimpleMultiPartRequest(Request.Method.POST, Constant.URL_API_UPLOAD,
SimpleMultiPartRequest req = new SimpleMultiPartRequest(Request.Method.POST, Constant.URL_API_SHOPLOCATION,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Expand All @@ -271,8 +271,8 @@ public void onErrorResponse(VolleyError error) {
CommonUtil.showToast(SensorNetworkActivity.this, "Upload failed! Code:" + error.networkResponse.statusCode);
}
});
req.addFile("file", imgFilename);
req.addMultipartParam("ext", "text/plain", imgFilename.substring(imgFilename.indexOf(".") + 1));
req.addFile("img", imgFilename);
//req.addMultipartParam("ext", "text/plain", imgFilename.substring(imgFilename.indexOf(".") + 1));
networkUtil.addReq(req);
}
});
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.getyourlocation.app.client.activity;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.getyourlocation.app.client.R;

public class testActivity extends AppCompatActivity {
public final static int RESULT_CODE=1;
private float x = 100;
private float y = 100;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Button Btn = (Button) findViewById(R.id.button1);
Btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent();
intent.putExtra("x", x);
intent.putExtra("y", y);
setResult(RESULT_CODE, intent);
finish();
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
public class NetworkUtil {
private static final String TAG = "NetworkUtil";
private static final String REQ_TAG = "req";
private static final int REQ_TIMEOUT = 3000;
private static final int REQ_TIMEOUT = 10000;

private static NetworkUtil instance = null;

Expand Down
9 changes: 9 additions & 0 deletions app/src/main/res/layout/activity_indoor_map.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,13 @@
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="20dp" />

<Button
android:id="@+id/indoorMap_location_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="28dp"
android:text="定位" />
</RelativeLayout>
Loading