diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index da49c43..586375c 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -3,8 +3,9 @@
+
+
+
+
+
+
+
+
+ C/C++
+
+
+
+
+ C/C++
+
+
+
+
+
@@ -34,6 +53,12 @@
+
+
+
+
+
+
@@ -45,9 +70,8 @@
-
+
- 1.8
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 94a25f7..6564d52 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/mobile/src/main/java/jagsc/org/abc2016springclient/BluetoothClient.java b/mobile/src/main/java/jagsc/org/abc2016springclient/BluetoothClient.java
index 8f71b52..36939e9 100644
--- a/mobile/src/main/java/jagsc/org/abc2016springclient/BluetoothClient.java
+++ b/mobile/src/main/java/jagsc/org/abc2016springclient/BluetoothClient.java
@@ -113,76 +113,76 @@ public void doClose() {
* @param msg 送信メッセージ.
*/
public void doSend(String msg) {
- byte[] buffer_ = new byte[msg.length() / 2 + 1];
- for (int i = 0; i < msg.length(); ++i) {
- int tmp;
- switch (msg.charAt(i)) {
- case '0':
- tmp = 0x01;
- break;
- case '1':
- tmp = 0x02;
- break;
- case '2':
- tmp = 0x03;
- break;
- case '3':
- tmp = 0x04;
- break;
- case '4':
- tmp = 0x05;
- break;
- case '5':
- tmp = 0x06;
- break;
- case '6':
- tmp = 0x07;
- break;
- case '7':
- tmp = 0x08;
- break;
- case '8':
- tmp = 0x09;
- break;
- case '9':
- tmp = 0x0a;
- break;
- case '-':
- tmp = 0x0b;
- break;
- case '.':
- tmp = 0x0c;
- break;
- case ',':
- tmp = 0x0d;
- break;
- default:
- tmp = 0x00;
- break;
- }
- if (i % 2 == 0) {
- buffer_[i / 2] = (byte) (tmp << 4);
- } else {
- buffer_[i / 2] += (byte) tmp;
- }
- }
try {
- btOut.write(buffer_);
- if( await_ ) {
- btOut.write('\n');
+ if( !msg.isEmpty() ){
+
+ byte[] buffer_ = new byte[msg.length() / 2 + 1];
+ for (int i = 0; i < msg.length(); ++i) {
+ int tmp;
+ switch (msg.charAt(i)) {
+ case '0':
+ tmp = 0x01;
+ break;
+ case '1':
+ tmp = 0x02;
+ break;
+ case '2':
+ tmp = 0x03;
+ break;
+ case '3':
+ tmp = 0x04;
+ break;
+ case '4':
+ tmp = 0x05;
+ break;
+ case '5':
+ tmp = 0x06;
+ break;
+ case '6':
+ tmp = 0x07;
+ break;
+ case '7':
+ tmp = 0x08;
+ break;
+ case '8':
+ tmp = 0x09;
+ break;
+ case '9':
+ tmp = 0x0a;
+ break;
+ case '-':
+ tmp = 0x0b;
+ break;
+ case '.':
+ tmp = 0x0c;
+ break;
+ case ',':
+ tmp = 0x0d;
+ break;
+ default:
+ tmp = 0x00;
+ break;
+ }
+ if (i % 2 == 0) {
+ buffer_[i / 2] = (byte) (tmp << 4);
+ } else {
+ buffer_[i / 2] += (byte) tmp;
+ }
+ }
+ btOut.write(buffer_);
+ if( await_ ) {
+ btOut.write('\n');
+ }
}
- else {
- new SendTask().execute(msg);
+
+ if( !await_ ) {
+ new SendTask().execute();
}
} catch (Throwable t) {
doClose();
}
}
- public void doReceive(){
- new ReceiveTask().execute();
- }
-
/**
* Bluetoothと接続を開始する非同期タスク。
* - 時間がかかる場合があるのでProcessDialogを表示する。
@@ -230,9 +230,6 @@ protected Object doInBackground(Void... params) {
try {
btOut.close();
} catch (Throwable t) {/*ignore*/}
- try {
- btIn.close();
- } catch (Throwable t) {/*ignore*/}
bluetoothSocket.close();
} catch (Throwable t) {
return t;
@@ -252,35 +249,17 @@ protected void onPostExecute(Object result) {
/**
* サーバとメッセージの送受信を行う非同期タスク。
*/
- private class SendTask extends AsyncTask {
+ private class SendTask extends AsyncTask {
@Override
- protected Void doInBackground(String... params) {
+ protected Object doInBackground(String... params) {
try {
btOut.flush();
- return null;
- } catch (Throwable t) {
- doClose();
- return null;
- }
- }
-
- @Override
- protected void onPostExecute(Void result) {
- Log.d("BluetoothInfo","Sending is Success");
- }
- }
-
- private class ReceiveTask extends AsyncTask {
- @Override
- protected Object doInBackground(Void... params) {
- try {
byte[] buff = new byte[512];
int len = btIn.read(buff);
-
return new String(buff, 0, len);
} catch (Throwable t) {
doClose();
- return t;
+ return null;
}
}
@@ -290,20 +269,24 @@ protected void onPostExecute(Object result){
Log.e(TAG, result.toString(), (Throwable) result);
activity.errorDialog(result.toString());
} else {
- String r_ = result.toString();
- if( r_.equals("\0") ){
- //Log.i("test","empty message");
+ if( result == null ){
+ Log.e("test","disconnect");
} else {
- // TODO:readyやvibratorの転送.
- Pattern p = Pattern.compile("scene:([^\n\0\r]*)");
- Matcher m = p.matcher(r_);
- if( m.find() ){
- String scene_name_ = m.group(1);
- Toast.makeText(activity,"scene is changed"+scene_name_,Toast.LENGTH_SHORT).show();//とりあえずトーストで表示
- activity.SyncData(scene_name_, "scene_name");
+ String r_ = result.toString();
+ if( r_.equals("\0") ){
+ //Log.i("test","empty message");
+ } else {
+ // TODO:readyやvibratorの転送.
+ Pattern p = Pattern.compile("scene:([^\n\0\r]*)");
+ Matcher m = p.matcher(r_);
+ if( m.find() ){
+ String scene_name_ = m.group(1);
+ Toast.makeText(activity,"scene is changed: "+scene_name_,Toast.LENGTH_SHORT).show();//とりあえずトーストで表示
+ activity.SyncData("scene", scene_name_);
+ }
}
+ await_ = false;
}
- await_ = false;
}
}
}
diff --git a/mobile/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java b/mobile/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java
index ebc1d2b..c56d58b 100644
--- a/mobile/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java
+++ b/mobile/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java
@@ -6,5 +6,5 @@
* Created by prprhyt on 2016/02/21.
*/
public class GlobalVariables extends Application {
- final static String DATA_PATH = "/datapath";
+ final static String DATA_PATH = "/abc2016cdata";
}
diff --git a/mobile/src/main/java/jagsc/org/abc2016springclient/MainActivity.java b/mobile/src/main/java/jagsc/org/abc2016springclient/MainActivity.java
index 3c52b1c..33adbd9 100644
--- a/mobile/src/main/java/jagsc/org/abc2016springclient/MainActivity.java
+++ b/mobile/src/main/java/jagsc/org/abc2016springclient/MainActivity.java
@@ -6,6 +6,7 @@
import android.bluetooth.BluetoothDevice;
import android.content.DialogInterface;
import android.os.Bundle;
+import android.os.Handler;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
@@ -48,7 +49,7 @@ public class MainActivity extends AppCompatActivity implements GoogleApiClient.C
private String resultstr;
private boolean connected_;
-
+ private Handler _handler = new Handler();
private GlobalVariables globalv;
@@ -66,7 +67,17 @@ protected void onCreate(Bundle savedInstanceState) {
mGoogleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).addApi(Wearable.API).build();
resultstr="";
- FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
+ _handler.postDelayed(new Runnable() {//Timer的な
+ @Override
+ public void run() {
+ if( connected_ ){
+ SendSensorNum("");
+ }
+ _handler.postDelayed(this, 50);
+ }
+ }, 50);
+ SyncData("scene","title");
+ FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -275,7 +286,7 @@ public void SyncData(String key_name,String sync_data){//HandheldとWear間の
pendingResult.setResultCallback(new ResultCallback() {
@Override
public void onResult(DataApi.DataItemResult dataItemResult) {
- Log.d("TAG", "onResult:" + dataItemResult.getStatus().toString());
+ Log.d("test", "onResult:" + dataItemResult.getStatus().toString());
}
});
@@ -305,8 +316,6 @@ public boolean onOptionsItemSelected(MenuItem item) {
public void SendSensorNum(String sendstr){
bluetoothClient.doSend(sendstr);
- bluetoothClient.doReceive();
-
}
}
diff --git a/wear/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java b/wear/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java
index a0d52c4..cdb8726 100644
--- a/wear/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java
+++ b/wear/src/main/java/jagsc/org/abc2016springclient/GlobalVariables.java
@@ -10,6 +10,6 @@
*/
public class GlobalVariables extends Application {
GoogleApiClient mGoogleApiClient;
- final static String DATA_PATH = "/datapath";
+ final static String DATA_PATH = "/abc2016cdata";
}
diff --git a/wear/src/main/java/jagsc/org/abc2016springclient/MainActivity.java b/wear/src/main/java/jagsc/org/abc2016springclient/MainActivity.java
index 8833876..ab1cfa7 100644
--- a/wear/src/main/java/jagsc/org/abc2016springclient/MainActivity.java
+++ b/wear/src/main/java/jagsc/org/abc2016springclient/MainActivity.java
@@ -1,6 +1,7 @@
package jagsc.org.abc2016springclient;
+import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
@@ -65,8 +66,9 @@ protected void onCreate(Bundle savedInstanceState) {
btn_exit.setOnClickListener(this);
mTextView = (TextView) findViewById(R.id.textView_ready);
- globalv.mGoogleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(Wearable.API).build();
-
+ if (globalv.mGoogleApiClient == null) {
+ globalv.mGoogleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this).addOnConnectionFailedListener(this).addApi(Wearable.API).build();
+ }
/*mContainerView = (BoxInsetLayout) findViewById(R.id.container);
@@ -101,6 +103,10 @@ public void onExitAmbient() {
@Override
protected void onPause(){
super.onPause();
+ if (globalv.mGoogleApiClient != null && globalv.mGoogleApiClient.isConnected()) {
+ Wearable.DataApi.removeListener(globalv.mGoogleApiClient, this);
+ globalv.mGoogleApiClient.disconnect();
+ }
}
@Override
@@ -117,6 +123,11 @@ protected void onStop(){
globalv.mGoogleApiClient.disconnect();
Log.d("TAG", Boolean.toString(globalv.mGoogleApiClient.isConnected()));
}
+ if(globalv.mGoogleApiClient != null && globalv.mGoogleApiClient.isConnected()) {
+ //mGoogleApiClient.disconnect();
+ Wearable.DataApi.removeListener(globalv.mGoogleApiClient, this);
+ globalv.mGoogleApiClient.disconnect();
+ }
}
@Override
@@ -172,6 +183,7 @@ public void onClick(DialogInterface dialog, int which) {
public void onConnected(Bundle bundle) {
Log.d("TAG", "onConnected");
check_connection();
+ Wearable.DataApi.addListener(globalv.mGoogleApiClient, this);
}
private void check_connection() {//非同期でwearにHandheldが接続されているかを確認(現時点ではとりあえず複数台でもokにしている)
@@ -189,7 +201,7 @@ protected Integer doInBackground(Integer... params) {
protected void onPostExecute(Integer results_size) {
if(results_size>0){
ready = true;
- mTextView.setText("~準備完了~");
+ mTextView.setText("接続中");
}else{
ready = false;
mTextView.setText("Android端末との接続を確認できませんでした");
@@ -214,36 +226,33 @@ public void onDataChanged(DataEventBuffer dataEventBuffer) {//dataAPIが更新
DataMap dataMap = DataMap.fromByteArray(event.getDataItem().getData());
//variable = dataMap.get~("keyname"); で受け取る
-
- switch(event.getDataItem().getUri().toString()) {
- case "scene":
- scene = dataMap.getString("scene");
- switch (scene) {
- case "battle":
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- //受け取り後の処理をここに
- //resultview.setText(resultstr);
- Intent intentplay = new Intent(MainActivity.this, WearPlayingActivity.class);//WearPlayingActivityへ遷移
- startActivity(intentplay);
- }
- });
- break;
- case "result":
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- //受け取り後の処理をここに
- //resultview.setText(resultstr);
- Intent intentresult = new Intent(MainActivity.this, WearResultActivity.class);//WearRsultActivityへ遷移
- startActivity(intentresult);
- }
- });
- break;
- }
+ if( event.getDataItem().getUri().getPath().equals(globalv.DATA_PATH) ){
+ scene = dataMap.getString("scene");
+ switch (scene) {
+ case "battle":
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ //受け取り後の処理をここに
+ //resultview.setText(resultstr);
+ Intent intent_ = new Intent(getApplicationContext(), WearPlayingActivity.class);
+ intent_.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent_);
+ }
+ });
+ break;
+ case "title":
+ runOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ Intent intent_ = new Intent(getApplicationContext(), MainActivity.class);
+ intent_.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent_);
+ }
+ });
+ break;
+ }
}
-
}
}
}
diff --git a/wear/src/main/java/jagsc/org/abc2016springclient/WearPlayingActivity.java b/wear/src/main/java/jagsc/org/abc2016springclient/WearPlayingActivity.java
index e3faa2f..d5469a5 100644
--- a/wear/src/main/java/jagsc/org/abc2016springclient/WearPlayingActivity.java
+++ b/wear/src/main/java/jagsc/org/abc2016springclient/WearPlayingActivity.java
@@ -49,7 +49,7 @@
/**
* Created by yuuki on 2015/12/12.
*/
-public class WearPlayingActivity extends WearableActivity implements SensorEventListener,View.OnClickListener,GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener,DataApi.DataListener{ //DataApi.DataListener {
+public class WearPlayingActivity extends WearableActivity implements SensorEventListener,View.OnClickListener { //DataApi.DataListener {
//private GoogleApiClient mGoogleApiClient;
private String scene;//dataAPIのシーン情報のkey
@@ -95,9 +95,17 @@ public void run() {
}
}, 50);
- PutDataRequest dataMapRequest = PutDataRequest.create(globalv.DATA_PATH);
+ ArrayList> sensors = new ArrayList>();
+ sensors.add(manager.getSensorList(Sensor.TYPE_ACCELEROMETER));
+ sensors.add(manager.getSensorList(Sensor.TYPE_GYROSCOPE));
+ for(List sensor : sensors){
+ if(sensor.size()>0){
+ manager.registerListener(this,sensor.get(0),SensorManager.SENSOR_DELAY_GAME);
+ }
+ }
+ globalv.mGoogleApiClient.connect();
}
@Override
@@ -130,34 +138,21 @@ protected void onStop(){
super.onStop();
manager.unregisterListener(this);
_handler.removeCallbacksAndMessages(null);
- if(globalv.mGoogleApiClient != null && globalv.mGoogleApiClient.isConnected()){
- globalv.mGoogleApiClient.disconnect();
- }
+ _handler = null;
+ }
+ @Override
+ protected void onDestroy(){
+ super.onDestroy();
}
@Override
protected void onPause(){
super.onPause();
- if(globalv.mGoogleApiClient != null && globalv.mGoogleApiClient.isConnected()){
- globalv.mGoogleApiClient.disconnect();
- }
}
@Override
protected void onResume(){
super.onResume();
-
- ArrayList> sensors = new ArrayList>();
- sensors.add( manager.getSensorList(Sensor.TYPE_ACCELEROMETER));
- sensors.add(manager.getSensorList(Sensor.TYPE_GYROSCOPE));
-
- for(List sensor : sensors){
- if(sensor.size()>0){
- manager.registerListener(this,sensor.get(0),SensorManager.SENSOR_DELAY_GAME);
- }
- }
-
- globalv.mGoogleApiClient.connect();
}
@Override
@@ -196,72 +191,10 @@ public void RefreshSensorNum(){
}
- @Override
- public void onDataChanged(DataEventBuffer dataEventBuffer) {//dataAPIが更新されたら自動で呼び出される
- for (DataEvent event : dataEventBuffer) {
- if (event.getType() == DataEvent.TYPE_DELETED) {
- Log.d("TAG", "DataItem deleted: " + event.getDataItem().getUri());
- } else if (event.getType() == DataEvent.TYPE_CHANGED) {
- Log.d("TAG", "DataItem changed: " + event.getDataItem().getUri());
- DataMap dataMap = DataMap.fromByteArray(event.getDataItem().getData());
- //variable = dataMap.get~("keyname"); で受け取る
-
-
- switch(event.getDataItem().getUri().toString()) {
- case "scene":
- scene = dataMap.getString("scene");
- switch (scene) {
- case "scene:title":
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- //受け取り後の処理をここに
- //resultview.setText(resultstr);
- Intent intenttitle = new Intent(WearPlayingActivity.this, MainActivity.class);//MainActivityへ遷移
- startActivity(intenttitle);
- }
- });
- break;
- case "scene:result":
- runOnUiThread(new Runnable() {
- @Override
- public void run() {
- //受け取り後の処理をここに
- //resultview.setText(resultstr);
- Intent intentresult = new Intent(WearPlayingActivity.this, WearResultActivity.class);//WearResultActivityへ遷移
- startActivity(intentresult);
- }
- });
- break;
- }
- case "vibrator":
- int num = dataMap.getInt("vibrator");
- vib = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);//バイブさせるためのサービスをvibに入れる
- vib.vibrate(num);
- break;
- }
-
- }
- }
- }
-
-
-
- @Override
- public void onConnected(Bundle bundle){
- Log.d("TAG", "onConnected");
- }
- @Override
- public void onConnectionSuspended(int i){
- Log.d("TAG", "onConnectionSuspended");
- }
- @Override
- public void onConnectionFailed(ConnectionResult connectionResult){
- Log.e("TAG", "onConnectionFailed");
- }
-
public void SendToHandheld(String send_data){
- if(send_data == null) return;
+ if(send_data == null) {
+ return;
+ }
new AsyncTask() {
@Override
protected String doInBackground(String... params) {