diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..38fe66f --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 02549a2..7dae684 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -13,7 +13,6 @@ - @@ -23,8 +22,6 @@ - - diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index df9f9d6..6168258 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,7 +20,7 @@ + android:screenOrientation="landscape" > @@ -39,6 +39,7 @@ android:name=".MemberRoomActivity" android:exported="true" android:screenOrientation="landscape" /> + call, Response response) { if (response.isSuccessful()) { //ridとnicknameをIrisへ - String rid = response.body().getRid(); + /*String rid = response.body().getRid(); ((Iris) getApplication()).setRid(rid); - ((Iris) getApplication()).setNickname(nickname); + ((Iris) getApplication()).setNickname(nickname);*/ //次の画面へ遷移 Intent intent = new Intent(CreateRoomActivity.this,OwnerRoomActivity.class); startActivity(intent); diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java index 4575e47..ffdbe20 100644 --- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java @@ -1,14 +1,74 @@ package org.ntlab.irisclient; import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.TextView; -public class DrawingActivity extends AppCompatActivity { +import org.ntlab.irisclient.viewmodels.DrawingStateViewModel; + +import java.util.List; + +public class DrawingActivity extends AppCompatActivity implements View.OnClickListener { + + private DrawingCanvas drawingCanvas; + DrawingStateViewModel drawingStateViewModel = new ViewModelProvider(this).get(DrawingStateViewModel.class); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_drawing); + + drawingCanvas = (DrawingCanvas) findViewById(R.id.canvas); + + //Irisから必要な情報を取得 + Iris iris = (Iris) this.getApplication(); + String rid = iris.getRid(); + String nickName = iris.getNickname(); + + //viewModelに必用な情報をセット + drawingStateViewModel.setRid(rid); + drawingStateViewModel.setNickName(nickName); + + findViewById(R.id.okButtton).setOnClickListener(this);//お絵描き終了ボタン + TextView textKeyword =(TextView)findViewById(R.id.textKeyword);//keywordのTextView + + //getKeywords + List keywords = drawingStateViewModel.getKeywords(rid); + + //getDno + drawingStateViewModel.getDno().observe(this, new Observer() { + @Override + public void onChanged(Integer dno) { + String keyword = keywords.get(dno); + textKeyword.setText(keyword); + } + }); + + //getState + drawingStateViewModel.getState().observe(this, new Observer() { + @Override + public void onChanged(Integer state) { + //stateが変わったらゲーム画面へ遷移 + Intent intent = new Intent(DrawingActivity.this, GameActivity.class); + startActivity(intent); + } + }); + //タイマースタート呼び出し + drawingStateViewModel.start(500); } + + @Override + public void onClick(View v){ + if(v.getId() == R.id.okButtton) {//okButtonが押されたときの処理 + drawingStateViewModel.putDrawing(); + }else if(v.getId() == R.id.clearButton){//clearButtonが押されたときの処理 + drawingCanvas.clearCanvas(); + } + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java new file mode 100644 index 0000000..9c11905 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java @@ -0,0 +1,70 @@ +package org.ntlab.irisclient; + +import android.content.Context; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Path; +import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.View; + +import androidx.annotation.Nullable; + +public class DrawingCanvas extends View { + + private Path path; + private Paint paint; + + public DrawingCanvas(Context context, @Nullable AttributeSet attrs) { + super(context, attrs); + + //1)コンストラクタ(≒必需品) + path = new Path();//線を引いたり、図形を描いたり、要するにグラフィック + + paint = new Paint();//筆の種類 + paint.setColor(Color.RED);//色の指定 + paint.setStyle(Paint.Style.STROKE);//線をひく + paint.setStrokeWidth(20);//幅 + } + + //2)onDraw(描画の準備/プロペラが回りだした状態) + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + canvas.drawPath(path,paint); + } + + //3)実際の操縦 (条件分岐:押したとき、動かしたとき、放した時) + @Override + public boolean onTouchEvent(MotionEvent event) { + //(3-1)座標を取得(x座標、y座標) + float x = event.getX(); + float y = event.getY(); + + //(3-2)タッチの処理 + switch (event.getAction()){ + case MotionEvent.ACTION_DOWN://タッチした瞬間 + path.moveTo(x,y); + invalidate(); + break; + case MotionEvent.ACTION_MOVE://動かしている間 + path.lineTo(x,y); + invalidate(); + break; + case MotionEvent.ACTION_UP://手を離す + break; + } + + //return super.onTouchEvent(event); + return true; + } + + + //4)クリア処理 + public void clearCanvas(){ + path.reset(); + invalidate(); + } + +} diff --git a/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java index 1a45425..b5c51d3 100644 --- a/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java @@ -69,11 +69,12 @@ public void onResponse(Call call, Response response) { if(response.isSuccessful()){ - /*String responseRid = response.body().getRid(); - ((Iris) getApplication()).setRid(responseRid);*/ + String responseRid = response.body().getRid(); + ((Iris) getApplication()).setRid(responseRid); + ((Iris) getApplication()).setNickname(name); Intent intent = new Intent(EnterRoomActivity.this,MemberRoomActivity.class); - intent.putExtra("nickname", name); + //intent.putExtra("nickname", name); startActivity(intent); }else { Snackbar.make(v, "部屋に同名のプレイヤーがいるか,満席です", Snackbar.LENGTH_LONG).show(); diff --git a/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java b/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java index b18a537..371c130 100644 --- a/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java +++ b/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java @@ -8,31 +8,83 @@ import android.widget.ArrayAdapter; import android.widget.TextView; -import org.ntlab.irisclient.models.Member; +import java.util.List; public class MemberListAdapter extends ArrayAdapter { - private LayoutInflater mLayoutInflater; + static class ViewHolder { + TextView textView; + } + private LayoutInflater inflater; + private final int itemLayoutId; + private final List memberList; final int redColor = Color.rgb(172, 32,32); final int blueColor = Color.rgb(32, 32, 172); final int grayColor = Color.rgb(172, 172, 172); - public MemberListAdapter(Context context) { + public MemberListAdapter(Context context, int itemLayoutId, + List members) { super(context, 0); - mLayoutInflater = LayoutInflater.from(context); + this.inflater = (LayoutInflater) context.getSystemService( + Context.LAYOUT_INFLATER_SERVICE); + this.itemLayoutId = itemLayoutId; + this.memberList = members; } @Override public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + + if (convertView == null) { + // activity_member_room.xml に member_list_layout.xml を inflate して convertView とする + convertView = inflater.inflate(itemLayoutId, parent, false); + + // ViewHolder を生成 + holder = new ViewHolder(); + holder.textView = convertView.findViewById(R.id.textView); + + convertView.setTag(holder); + + if (position == 0) { + // 背景色を変える + convertView.setBackgroundColor(Color.rgb(255, 127, 255)); + }else{ + convertView.setBackgroundColor(Color.rgb(0, 125, 0)); + } + } + else { + holder = (ViewHolder) convertView.getTag(); + } + + // 現在の position にあるファイル名リストを holder の textView にセット + holder.textView.setText(memberList.get(position)); + + return convertView; +/* View root = mLayoutInflater.inflate(R.layout.activity_member_room, null); String item = getItem(position); root.setBackgroundColor(redColor); +*/ + } - return root; + @Override + public int getCount() { + // texts 配列の要素数 + return memberList.size(); + } + + @Override + public String getItem(int position) { + return null; + } + + @Override + public long getItemId(int position) { + return 0; } } diff --git a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java index 2e2d6cb..76ef2a2 100644 --- a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java @@ -17,21 +17,24 @@ import android.widget.ListView; import android.widget.TextView; +import com.google.android.material.snackbar.Snackbar; + import org.ntlab.irisclient.entities.RoomJson; import org.ntlab.irisclient.models.Member; import org.ntlab.irisclient.viewmodels.RoomViewModel; import java.util.ArrayList; +import java.util.List; public class MemberRoomActivity extends AppCompatActivity { + //RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class); + //フィールド ArrayList members = new ArrayList<>(); String r = "roomid"; String myName = "null"; - //String roomId = ((Iris) getApplication()).getRid(); - //private RoomViewModel roomViewModel; @@ -41,6 +44,9 @@ super.onCreate(savedInstanceState); setContentView(R.layout.activity_member_room); + String roomId = ((Iris) getApplication()).getRid(); + String nickname = ((Iris) getApplication()).getNickname(); + //自分のなまえ //Intent intentMain = getIntent(); //myName = intentMain.getStringExtra("nickname"); @@ -63,14 +69,33 @@ m2.setBelongs("b"); m2.setMaster(true); + Member m3 = new Member("m3"); + m2.setBelongs("r"); + m2.setMaster(false); + Member m4 = new Member("m4"); + m2.setBelongs("b"); + m2.setMaster(false); + Member m5 = new Member("m5"); + m2.setBelongs("r"); + m2.setMaster(false); members.add(m1.getNickname()); members.add(m2.getNickname()); + members.add(m3.getNickname()); + members.add(m4.getNickname()); + members.add(m5.getNickname()); ListView membersList = (ListView) findViewById(R.id.MembersList); - // ArrayAdapter adapter = new MemberListAdapter(this.getApplicationContext()); - ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, members); + //ArrayAdapter adapter = new MemberListAdapter(this.getApplicationContext()); + //ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, members); + /*ArrayAdapter adapter = new ArrayAdapter(this.getApplicationContext(), + R.layout.member_list_layout, members);*/ + /*ArrayAdapter adapter = new ArrayAdapter(this.getApplicationContext(), + android.R.layout.simple_list_item_1, members);*/ + + BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), + R.layout.member_list_layout, members); membersList.setAdapter(adapter); @@ -84,7 +109,18 @@ //--------------------------------------------------------------- //部屋ID情報 TextView RoomIdText = findViewById(R.id.roomID); - RoomIdText.setText(r); + RoomIdText.setText(roomId); + + /*roomViewModel.getMembersLiveData().observe(this, new Observer>() { + private List members; + @Override + public void onChanged(List members) { + + } + }); + + roomViewModel.start(500);*/ + } /* @@ -170,9 +206,7 @@ copyButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - r = "コピーボタン検知しました"; - TextView RoomIdText = findViewById(R.id.roomID); - RoomIdText.setText(r); + Snackbar.make(v, "コピーしました", Snackbar.LENGTH_LONG).show(); } }); } diff --git a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java index 98d4be8..67b9399 100644 --- a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java @@ -10,11 +10,16 @@ import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import org.ntlab.irisclient.models.Member; import org.ntlab.irisclient.resources.RoomsRest; +import org.ntlab.irisclient.viewmodels.RoomViewModel; import java.util.ArrayList; import java.util.Collections; +import java.util.List; import retrofit2.Call; import retrofit2.Callback; @@ -26,14 +31,27 @@ //フィールド String r = "部屋ID " + "123456"; - String nickname = ((Iris) getApplication()).getNickname(); - String rid = ((Iris) getApplication()).getRid(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_owner_room); + String nickname = ((Iris) getApplication()).getNickname(); + String rid = ((Iris) getApplication()).getRid(); + + //RoomViewModelへのアクセス + RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class); + + //LiveData(List)への購読 + roomViewModel.getMembersLiveData().observe(this, new Observer>() { + private List members; + @Override + public void onChanged(List members) { + + } + }); + //-------------------------------------------------------------------------- //各ボタン処理 ArrayList members = new ArrayList<>(); @@ -170,6 +188,10 @@ //部屋ID情報 TextView RoomIdText = findViewById(R.id.roomID); RoomIdText.setText(r); + + + + roomViewModel.start(500); } /*private getMemberInformation(){ diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java index 47dba99..2c50ffa 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java @@ -1,13 +1,15 @@ package org.ntlab.irisclient.viewmodels; -import org.ntlab.irisclient.models.DrawingState; + import org.ntlab.irisclient.resources.DrawingRest; import org.ntlab.irisclient.resources.RoomsRest; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; -import androidx.lifecycle.ViewModel; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.Base64; import java.util.List; import retrofit2.Retrofit; @@ -16,7 +18,7 @@ import retrofit2.Response; import retrofit2.converter.jackson.JacksonConverterFactory; -public class DrawingStateViewModel extends ViewModel { +public class DrawingStateViewModel extends TimerViewModel { final private MutableLiveData stateMutableLiveData=new MutableLiveData<>(); final private MutableLiveData dnoMutableLiveData=new MutableLiveData<>(); @@ -24,6 +26,8 @@ private Integer drawingStatePreData; private Integer dnoPreData; + private String rid; + private String nickName; //フィールド public DrawingStateViewModel(MutableLiveData drawingStateMutableLiveData) { @@ -34,14 +38,14 @@ } //ゲッター - public LiveData getDrawingStateLiveData(){ - return this.stateMutableLiveData; - } +// public LiveData getDrawingStateLiveData(){ +// return this.stateMutableLiveData; +// } + public void updateState(String rid) { final RoomsRest roomsRest = retrofit.create(RoomsRest.class); - final DrawingRest drawingRest = retrofit.create(DrawingRest.class); Call call = roomsRest.getState(rid); call.enqueue(new Callback() { @@ -63,41 +67,61 @@ public void onFailure(Call call, Throwable t) { } }); - } -// public void updateDno(String rid) { -// -// final RoomsRest roomsRest = retrofit.create(RoomsRest.class); -// final DrawingRest drawingRest = retrofit.create(DrawingRest.class); -// Call call = drawingRest.getDno(rid,nickname); -// -// call.enqueue(new Callback() { -// @Override -// public void onResponse(Call call, Response response) { -// if (response.isSuccessful()){ -// -// if(response.body().equals(drawingStatePreData)){ -// //値が一緒なら書き換えない -// }else{ -// //値が異なるときのみライブデータを上書き -// dnoMutableLiveData.setValue(response.body()); -// dnoPreData = response.body(); -// } -// } -// } -// -// @Override -// public void onFailure(Call call, Throwable t) { -// } -// }); -// } -public List getKeywords(String rid){ - return null; - } -public LiveData getDno(){ - return this.dnoMutableLiveData; - } -public LiveData getState(){ - return this.stateMutableLiveData; - } + } + public void updateDno(String rid, String nickname) { + final DrawingRest drawingRest = retrofit.create(DrawingRest.class); + Call call = drawingRest.getDno(rid,nickname); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()){ + + if(response.body().equals(drawingStatePreData)){ + //値が一緒なら書き換えない + }else{ + //値が異なるときのみライブデータを上書き + dnoMutableLiveData.setValue(response.body()); + dnoPreData = response.body(); + } + } + } + + @Override + public void onFailure(Call call, Throwable t) { + } + }); + } + + public List getKeywords(String rid){ + final DrawingRest drawingRest = retrofit.create(DrawingRest.class); + List call = (List) drawingRest.getKeywords(rid); + return call; + } + public LiveData getDno(){ + return this.dnoMutableLiveData; + } + public LiveData getState(){ + return this.stateMutableLiveData; + } + + public void setRid(String rid){ + this.rid = rid; + } + + public void setNickName(String nickName){ + this.nickName = nickName; + } + @Override + public void update() { + updateState(rid); + updateDno(rid, nickName); + } + public String putDrawing(){ + String string = "sample"; + Base64.Encoder encoder = Base64.getEncoder(); + String encoded = encoder.encodeToString(string.getBytes()); + return encoded; + } } diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java new file mode 100644 index 0000000..e4d1820 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java @@ -0,0 +1,81 @@ +package org.ntlab.irisclient.viewmodels; + +import org.ntlab.irisclient.entities.RoomJson; +import org.ntlab.irisclient.models.Member; +import org.ntlab.irisclient.models.Settings; +import org.ntlab.irisclient.resources.RoomsRest; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; + +public class GameViewModel extends TimerViewModel { + + + //フィールド + private String rid; + final private MutableLiveData roomMutableLiveData; + final private MutableLiveData settingsMutableLiveData; + final private Retrofit retrofit; + + //更新比較用フィールド + private Settings settingsPreData; + private RoomJson roomJsonPreData; + + //------------------------------------------------------------------ + //コンストラクタ + public GameViewModel() { + this.roomMutableLiveData = new MutableLiveData<>(); + this.settingsMutableLiveData = new MutableLiveData<>(); + this.retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + } + + //---------------------------------------------------- + //setter + public void setRid(String rid) { + this.rid = rid; + } + + //-------------------------------------------------------------- + // getter + public LiveData getRoomLiveData() { + return this.roomMutableLiveData; + } + public LiveData getSettingsLiveData() { + return this.settingsMutableLiveData; + } + + //----------------------------------------------------------------------------- + // updates + @Override + public void update() { + updateRoom(rid); + updateDno(rid); + } + //部屋の情報の更新(RoomJson) + public void updateRoom(String rid) { + final RoomsRest roomsRest = retrofit.create(RoomsRest.class); + + + } + + + public void updateDno(String rid) { + final RoomsRest roomsRest = retrofit.create(RoomsRest.class); + + + } + + +} diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java index 10f4836..47ccf45 100644 --- a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java @@ -17,21 +17,22 @@ import retrofit2.Retrofit; import retrofit2.converter.jackson.JacksonConverterFactory; -public class RoomViewModel extends ViewModel { +public class RoomViewModel extends TimerViewModel { //フィールド - final private MutableLiveData roomMutableLiveData; + private String rid; + final private MutableLiveData> membersLiveData; final private MutableLiveData settingsMutableLiveData; final private Retrofit retrofit; //更新比較用フィールド + private List membersPreData; private Settings settingsPreData; - private RoomJson roomJsonPreData; //------------------------------------------------------------------ //コンストラクタ public RoomViewModel() { - this.roomMutableLiveData = new MutableLiveData<>(); + this.membersLiveData = new MutableLiveData<>(); this.settingsMutableLiveData = new MutableLiveData<>(); this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/") @@ -40,9 +41,13 @@ } //----------------------------------------------------------------- + //setter + public void setRid(String rid){ + this.rid = rid; + } // getter - public LiveData getRoomLiveData() { - return this.roomMutableLiveData; + public LiveData> getMembersLiveData() { + return this.membersLiveData; } public LiveData getSettingsLiveData() { return this.settingsMutableLiveData; @@ -50,8 +55,14 @@ //----------------------------------------------------------------------------- // updates + @Override + public void update(){ + updateMembers(rid); + updateSettings(rid); + } + //部屋の情報の更新(RoomJson) - public void updateRoom(String rid) { + public void updateMembers(String rid) { final RoomsRest roomsRest = retrofit.create(RoomsRest.class); Call> call = roomsRest.getRoomMember(rid); @@ -61,13 +72,18 @@ public void onResponse(Call> call, Response> response) { if (response.isSuccessful()){ + membersLiveData.setValue(response.body()); + membersPreData = response.body(); + + /* if(response.body().equals(roomJsonPreData)){ //値が一緒なら書き換えない }else{ //値が異なるときのみライブデータを上書き - roomMutableLiveData.setValue((RoomJson) response.body()); - roomJsonPreData = (RoomJson) response.body(); + membersLiveData.setValue(response.body()); + roomJsonPreData = response.body(); } + */ } } @@ -88,13 +104,18 @@ public void onResponse(Call call, Response response) { if (response.isSuccessful()){ + settingsMutableLiveData.setValue(response.body()); + settingsPreData = response.body(); + + /* if(response.body().equals(settingsPreData)){ //値が一緒なら書き換えない }else{ //値が異なるときのみライブデータを上書き settingsMutableLiveData.setValue(response.body()); settingsPreData = response.body(); - } + }*/ + } } diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/TimerViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/TimerViewModel.java new file mode 100644 index 0000000..9254669 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/TimerViewModel.java @@ -0,0 +1,48 @@ +package org.ntlab.irisclient.viewmodels; + + +import android.util.Log; + import android.view.MotionEvent; + + import androidx.lifecycle.LiveData; + import androidx.lifecycle.MutableLiveData; + import androidx.lifecycle.ViewModel; + + import java.util.ArrayList; + import java.util.Collection; + import java.util.HashMap; + import java.util.Random; + import java.util.concurrent.ScheduledThreadPoolExecutor; + import java.util.concurrent.TimeUnit; + + +//----------------------------------------------------------------- +// +abstract class TimerViewModel extends ViewModel implements Runnable { + + private ScheduledThreadPoolExecutor thread = null; + + + //----------------------------------------------------------------- + // 一定間隔でサーバー上の筆跡を取得する(GET) + @Override + public void run() { + update(); + } + + public abstract void update(); + + //----------------------------------------------------------------- + //何ミリ秒ごとにrun()を実行するかを決める + public void start(int interval) { + thread = new ScheduledThreadPoolExecutor(1); + thread.scheduleWithFixedDelay(this, interval, 1000L, TimeUnit.MILLISECONDS); + } + + //----------------------------------------------------------------- + // + public void stop() { + thread.shutdown(); + } + //----------------------------------------------------------------- +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_drawing.xml b/app/src/main/res/layout/activity_drawing.xml index 5935a37..db68bde 100644 --- a/app/src/main/res/layout/activity_drawing.xml +++ b/app/src/main/res/layout/activity_drawing.xml @@ -7,37 +7,52 @@ tools:context=".DrawingActivity">