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

Wear ←→ Mobileの通信 #9

Open
mori-atsushi opened this issue Mar 11, 2017 · 19 comments
Open

Wear ←→ Mobileの通信 #9

mori-atsushi opened this issue Mar 11, 2017 · 19 comments
Assignees

Comments

@mori-atsushi
Copy link

mori-atsushi commented Mar 11, 2017

情報をWear端末からMobile端末に、PC端末からWear端末に送信する。
PC用のソフトウェアはjavaで仮のプログラムを作成する。

仕様

mainクラスでMobileCommunicateクラスを起動する。
そのポインタを各コンポーネントに引数で渡し、通信を行う。

実装内容一覧

クラス名:Communicate

private HashMap data:保持するデータ

連想配列で現在のデータを保持する。

保持する内容
  • is_playing : 0(停止中), 1(再生中)
  • speed : 速度(0.*~1.0)
  • max_part :パートの数
  • part :パート(0~max_part)
  • playback_time : 全体の再生時間(-1のときは曲未選択)
  • now_play_time : 現在の再生時間

public void init(HashMap data):初期化

初期データを設定する。
syncThreadを立ち上げる。

public boolean sendData(HashMap data):データの送信

Mobileにデータの送信を””文字列””で行う。
成功かどうかをtrue,falseで返す

! データが変更されたらMobileCommunicateの持つスタティックフィールドを変更する

→またそれぞれのgetter,setterも持つ

@mori-atsushi
Copy link
Author

ちょっと勉強不足で仕様が怪しいので、問題があったらすぐ教えてください。

@Kousuke-N
Copy link
Contributor

Kousuke-N commented Mar 14, 2017

mainクラスでMobileCommunicateクラスを起動する。
そのポインタを各コンポーネントに引数で渡し、通信を行う。

ここの実装がめんどくさそうです
コンポーネントに渡さないほうが素直にかけそう

@Kousuke-N
Copy link
Contributor

public sendData():データの取得
現在のデータを取得する。

なんか違和感あるのでgetData()のほうがよくないでしょうか?

@Kousuke-N
Copy link
Contributor

連想配列の中身は未定ですか?

@mori-atsushi
Copy link
Author

コンポーネントに渡さないほうが素直にかけそう

僕も最終的にそう思って消したつもりだったけどわすれてたっぽい。
継承のほうがいいと思ったけど、実際どう実装するのかな?

連想配列の中身とかも自由に決めて。
ただ、わかるように最終的にここにでも書いておいてくれると助かります!

全体的に仕様は書き直してもらって構いません。
変更したら一番上のコメントを書き換えていって!

@Kousuke-N
Copy link
Contributor

Kousuke-N commented Mar 14, 2017

僕も最終的にそう思って消したつもりだったけどわすれてたっぽい。
継承のほうがいいと思ったけど、実際どう実装するのかな?

MainActivityのとこで一つのMobileCommunicateを作っておいてそれを各クラスから参照する形をとろうと思います。

あと関数名も変更します

@Kousuke-N
Copy link
Contributor

Kousuke-N commented Mar 14, 2017

いろいろ書いていますが連想配列に保存すべき内容だけでも教えてほしいです
あと現時点で問題がないかチェックお願いします

@mori-atsushi
Copy link
Author

以下の通信ができるだけの内容やな

再生 / 一時停止の通信 #10
頭出し / 早戻しの通信 #11
再生速度・練習区間・再生位置の通信 #12

@Kousuke-N
Copy link
Contributor

再生位置とかどれぐらいで更新したらいいですかね…
現時点での再生時間を1秒ずつ更新するか何か再生がストップされたとか重要なところでトリガーを発生させるのがいいのか…

@mori-atsushi
Copy link
Author

通信し続けるとやっぱり電池とか食うかなぁ?
フレーム落ちとかでせーので再生始めても合わない気はするから、10秒に一回+重要なところとかになる?
最初は重要なところだけでもいい気はするけど、ずっと通信は電池が瞬殺な気がする。

@Kousuke-N
Copy link
Contributor

なんかどんどん複雑になってるような気がする…
とりあえず重要なとこだけで一応実装しておいてあとから10秒に1回ってします

@Kousuke-N
Copy link
Contributor

Kousuke-N commented Mar 15, 2017

早戻しの実装めんどくさそうですね…
というか考えれば考えるほどめんどくさそう…
何か指針をいただけたら嬉しいです

@Kousuke-N
Copy link
Contributor

Kousuke-N commented Mar 15, 2017

再生 / 一時停止の通信 #10

→is_playingを変更することでなんとかなりそう

頭出し / 早戻しの通信 #11

→頭出し:現在の演奏時間(=now_play_time)を0にしたらなんとかなりそう
→早戻し:常に同期をとる?どれぐらいのスピードで巻き戻すかあらかじめ決めておいて定期的に同期をとる?

再生速度・練習区間・再生位置の通信 #12

→再生速度:speedの値を変更する
→練習区間:partとnow_play_time同期とれない?先にその情報も送信する?冗長になりそう
→再生位置:now_play_timeでなんとかできそう。常に同期?10秒に1回更新が妥当?

@mori-atsushi
Copy link
Author

再生 / 一時停止の通信 #10

→is_playingを変更することでなんとかなりそう<OK>

頭出し / 早戻しの通信 #11

→頭出し:現在の演奏時間(=now_play_time)を0にしたらなんとかなりそう<OK>
→is_backで巻き戻ししているか?していないかだけ同期を取ればあとはPCで制御できるはず。

再生速度・練習区間・再生位置の通信 #12

→再生速度:speedの変更はしなくていいので、再生開始時にデータを取得する。
→練習区間:同じく再生開始時に練習開始位置と終了位置だけ取得する。
→再生位置:とりあえず再生、一時停止が行われたときだけその時の再生位置を受信する形でいいんじゃないかな?

@mori-atsushi
Copy link
Author

細かい使用は各々のIsuueのときやるとして、今は汎用的な通信classを作ってくれたらええんやで

@Kousuke-N
Copy link
Contributor

了解です

@Kousuke-N
Copy link
Contributor

HashMapではなくGoogleさんのDataMap使いたいです

@Kousuke-N
Copy link
Contributor

private void syncThread():同期用スレッド

データの送受信を行い、Wearを通じてPCとのデータ同期を行う。

はいりませんでした。
サービスで実装できます

@Kousuke-N
Copy link
Contributor

ちょっと仕様を変更しました。

Kousuke-N added a commit that referenced this issue Mar 18, 2017
@Kousuke-N Kousuke-N changed the title PC←→Wear ←→ Mobileの通信 Wear ←→ Mobileの通信 Mar 18, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants