diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml index 63e623f..91e56cf 100644 --- a/.idea/deploymentTargetDropDown.xml +++ b/.idea/deploymentTargetDropDown.xml @@ -7,11 +7,11 @@ - + - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 1adffca..f0ab070 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -50,11 +50,14 @@ + + + - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b682eed..b7692a6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -39,8 +39,7 @@ - + android:label="@string/app_name"> @@ -51,8 +50,7 @@ - + android:label="@string/app_name"> @@ -63,7 +61,7 @@ + android:label="@string/app_name"> @@ -75,8 +73,7 @@ - + android:label="@string/app_name"> diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000..2468795 --- /dev/null +++ b/app/src/main/ic_launcher-playstore.png Binary files differ diff --git a/app/src/main/java/com/example/nemophila/FriendActivity.java b/app/src/main/java/com/example/nemophila/FriendActivity.java index 13ca487..ffd1b1c 100644 --- a/app/src/main/java/com/example/nemophila/FriendActivity.java +++ b/app/src/main/java/com/example/nemophila/FriendActivity.java @@ -13,9 +13,12 @@ import android.app.Dialog; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.graphics.Color; import android.graphics.PorterDuff; import android.os.Bundle; +import android.os.Handler; import android.util.DisplayMetrics; import android.view.LayoutInflater; import android.view.View; @@ -34,18 +37,28 @@ import com.example.nemophila.viewmodels.AccountViewModel; import com.example.nemophila.viewmodels.FriendViewModel; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class FriendActivity extends AppCompatActivity { private Nemophila nemophila; - FriendViewModel friendViewModel; - String uid; - String token; - String requestingId; - String requestingName; - String searchingId; + private FriendViewModel friendViewModel; + private String uid; + private String token; + private String requestingId; + private String requestingName; + private String searchingId; + private final ExecutorService executor = Executors.newSingleThreadExecutor(); + private final Handler handler = new Handler(); + private String friendIconUrlString; + private String requestingIconUrlString; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -56,11 +69,11 @@ RecyclerView friendRecyclerView = findViewById(R.id.friendsList); LinearLayout requestingConstraintLayout = findViewById(R.id.requestingLayout); + // フレンド一覧と申請先一覧の画面切り替え showFriend.setOnClickListener(v2 -> { friendRecyclerView.setVisibility(View.VISIBLE); requestingConstraintLayout.setVisibility(View.INVISIBLE); }); - showRequesting.setOnClickListener(v3 -> { friendRecyclerView.setVisibility(View.INVISIBLE); requestingConstraintLayout.setVisibility(View.VISIBLE); @@ -71,7 +84,8 @@ RecyclerView rv = findViewById(R.id.friendsList); // recyclerViewを取得 friendViewModel = new ViewModelProvider(this).get(FriendViewModel.class); // ViewModelを取得 nemophila = (Nemophila) this.getApplication(); - + uid = nemophila.getUid(); // 自身のidを取得 + token = nemophila.getToken(); // 自身のtokenを取得 //一行ずつを縦に(LinearLayout)表示するLayoutManagerを宣言 LinearLayoutManager llm = new LinearLayoutManager(this); @@ -83,8 +97,6 @@ rv.setHasFixedSize(true); rv.setLayoutManager(llm); - uid = nemophila.getUid(); // 自身のidを取得 - token = nemophila.getToken(); // 自身のtokenを取得 // getFriendsの通信が呼び出されて、フレンドの一覧をfriendsDatasetに格納し、Adapterにセットする FriendActivityAdapter adapter = new FriendActivityAdapter(friendsDataset) { @Override @@ -126,6 +138,28 @@ FriendDataModel data = new FriendDataModel(); data.setName(friend.getName()); data.setId(friend.getUid()); + + //url作る + friendIconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + executor.execute(() -> { + try{ + URL url = new URL(friendIconUrlString); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.connect(); + + InputStream is = con.getInputStream(); + + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> { + data.setIcon(bitmap); + adapter.notifyItemChanged(adapter.getPosition(data)); + }); + is.close(); + con.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + } + }); friendsDataset.add(data); } @@ -181,7 +215,6 @@ } }); - //RecyclerView(表示の設定、直接表示するところはLivedataを購読しているonChanged内に) List requestingDataList = new ArrayList<>(); @@ -236,6 +269,28 @@ data.setName(user.getName()); data.setId(user.getUid()); + //url作る + requestingIconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + executor.execute(() -> { + try{ + URL url = new URL(requestingIconUrlString); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.connect(); + + InputStream is = con.getInputStream(); + + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> { + data.setIcon(bitmap); + adapter_r.notifyItemChanged(adapter_r.getPosition(data)); + }); + is.close(); + con.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + } + }); + //投稿一つの情報がdataに全部セットされたらDatasetに追加 requestingDataList.add(0, data); } @@ -260,6 +315,10 @@ this.friendData = friendData; } + public int getPosition(FriendDataModel d) { + return friendData.indexOf(d); + } + public void setList(List friendData) { this.friendData = friendData; } @@ -298,6 +357,7 @@ public void onBindViewHolder(@NonNull FriendsViewHolder holder, int position) { // 後からアイコンの登録をできるようにする holder.nameView.setText(friendData.get(position).getName()); + holder.iconView.setImageBitmap(friendData.get(position).getIcon()); if (nemophila.getFavoriteFriends().contains(friendData.get(position).getId())) { holder.favorite.setVisibility(View.VISIBLE); } @@ -333,6 +393,7 @@ public static class FriendDataModel { private String name; private String id; + private Bitmap icon; public String getName() { return name; @@ -340,11 +401,13 @@ public String getId() { return id; } + public Bitmap getIcon() { return icon; } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id;} + public void setIcon(Bitmap icon){ this.icon = icon; } } // ----------- RequestingのRecyclerView用の内部クラス ------------// @@ -357,6 +420,8 @@ this.list =list; } + public int getPosition(RequestingDataModel d) { return list.indexOf(d); } + public void setList(List list) { this.list = list; } @@ -384,6 +449,7 @@ @Override public void onBindViewHolder(@NonNull FriendActivity.RequestingViewHolder holder, int position) { holder.nameView.setText(list.get(position).getName()); + holder.iconView.setImageBitmap(list.get(position).getIcon()); } @Override @@ -414,6 +480,7 @@ public static class RequestingDataModel { private String name; private String id; + private Bitmap icon; public String getName() { return name; @@ -421,6 +488,7 @@ public String getId() { return id; } + public Bitmap getIcon() { return icon; } public void setName(String name) { this.name = name; @@ -428,6 +496,7 @@ public void setId(String id){ this.id = id; } + public void setIcon(Bitmap icon) { this.icon = icon; } } //ダイアログでOKを押した時に呼び出される フレンド申請を送るメソッド diff --git a/app/src/main/java/com/example/nemophila/LoginActivity.java b/app/src/main/java/com/example/nemophila/LoginActivity.java index 2366fbf..c724040 100644 --- a/app/src/main/java/com/example/nemophila/LoginActivity.java +++ b/app/src/main/java/com/example/nemophila/LoginActivity.java @@ -40,10 +40,6 @@ nemophila = (Nemophila) this.getApplication(); //Nemophilaにtokenとuidがある場合ログイン画面をスキップ if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){ - //座標指定(仮) - nemophila.setCameraLatitude(defaultLat); - nemophila.setCameraLongitude(defaultLong); - nemophila.setZoom(defaultZoom); Intent intent = new Intent(LoginActivity.this,MapsActivity.class); startActivity(intent); diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java index ce1422c..7376a4d 100644 --- a/app/src/main/java/com/example/nemophila/MapsFragment.java +++ b/app/src/main/java/com/example/nemophila/MapsFragment.java @@ -204,20 +204,20 @@ nemophila.setCameraLongitude(mMap.getCameraPosition().target.longitude); nemophila.setZoom(mMap.getCameraPosition().zoom); //Shopの描画範囲を指定 - shopsViewModel.setViewArea(nemophila.getCameraLongitude() + 1, nemophila.getCameraLatitude() + 1, nemophila.getCameraLongitude() - 1, nemophila.getCameraLatitude() - 1); + shopsViewModel.setViewArea(nemophila.getCameraLongitude() + 7.5, nemophila.getCameraLatitude() + 7.5, nemophila.getCameraLongitude() - 7.5, nemophila.getCameraLatitude() - 7.5); }); // test用 座標を確認するため // タップした時のリスナーをセット -// mMap.setOnMapClickListener(tapLocation -> { -// // map(ピン以外)をtapされた位置の緯度経度を取得 -// tapLatlng = new LatLng(tapLocation.latitude, tapLocation.longitude); -// Toast.makeText(getActivity(), -// String.format("%s", tapLatlng), -// Toast.LENGTH_SHORT) -// .show(); -// }); + mMap.setOnMapClickListener(tapLocation -> { + // map(ピン以外)をtapされた位置の緯度経度を取得 + tapLatlng = new LatLng(tapLocation.latitude, tapLocation.longitude); + Toast.makeText(getActivity(), + String.format("%s", tapLatlng), + Toast.LENGTH_SHORT) + .show(); + }); //長押し時に店を作成し、その座標にピンを立てる diff --git a/app/src/main/java/com/example/nemophila/MyPageActivity.java b/app/src/main/java/com/example/nemophila/MyPageActivity.java index c6ef3de..acfdcd4 100644 --- a/app/src/main/java/com/example/nemophila/MyPageActivity.java +++ b/app/src/main/java/com/example/nemophila/MyPageActivity.java @@ -1,5 +1,8 @@ package com.example.nemophila; +import androidx.activity.result.ActivityResultCallback; +import androidx.activity.result.ActivityResultLauncher; +import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.lifecycle.Observer; @@ -10,23 +13,44 @@ import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.net.Uri; import android.os.Bundle; +import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.nemophila.entities.Post; import com.example.nemophila.viewmodels.AccountViewModel; +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.FileNotFoundException; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.ArrayList; +import java.util.Base64; import java.util.Collection; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +import static android.os.AsyncTask.execute; public class MyPageActivity extends AppCompatActivity { + private final ExecutorService executor = Executors.newSingleThreadExecutor(); + private final Handler handler = new Handler(); + private String iconUrlString; + private ImageView icon; + //MyPageActivity画面の作成 @Override protected void onCreate(Bundle savedInstanceState) { @@ -43,6 +67,11 @@ TextView id = (TextView) findViewById(R.id.id); id.setText(uid); + //アイコンを表示する + icon = findViewById(R.id.icon); + iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon"+uid+".jpg";; + setIcon(icon); + // 「閉じる」ボタンを押したときにメイン画面へ遷移する Button closeButton = (Button) findViewById(R.id.close); closeButton.setOnClickListener(new View.OnClickListener() { @@ -154,6 +183,28 @@ }); } + // アイコンに画像を設定 + private void setIcon(ImageView iv) { + executor.execute(() -> { + try{ + URL url = new URL(iconUrlString); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.connect(); + + InputStream is = con.getInputStream(); + + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> iv.setImageBitmap(bitmap)); + is.close(); + con.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + setIcon(iv); + } + }); + } + /* ここからMyPageActivityの内部クラス */ // Adapter diff --git a/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java index 458568c..cf6713f 100644 --- a/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java +++ b/app/src/main/java/com/example/nemophila/MyPageEditorActivity.java @@ -27,6 +27,9 @@ import com.example.nemophila.entities.Account; import com.example.nemophila.viewmodels.AccountViewModel; +import java.io.BufferedInputStream; +import java.io.ByteArrayOutputStream; +import java.io.FileNotFoundException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; @@ -45,15 +48,25 @@ private ExecutorService executor; private Handler handler; private String iconUrlString; - + private boolean iconFlag; //マイページ編集画面の作成 private ActivityResultLauncher launcher = registerForActivityResult(new ActivityResultContracts.OpenDocument(), new ActivityResultCallback() { @Override public void onActivityResult(Uri uri) { if(uri == null)return; - icon = new String(Base64.getEncoder().encode(uri.toString().getBytes())); ImageButton changeIconButton = findViewById(R.id.changeIconButton); changeIconButton.setImageURI(uri); + try { + InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(uri); + Bitmap bitmap = BitmapFactory.decodeStream(new BufferedInputStream(inputStream)); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); + byte[] byteArray = stream.toByteArray(); + icon = Base64.getEncoder().encodeToString(byteArray); + iconFlag = true; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } } }); @@ -70,7 +83,8 @@ iconButton = findViewById(R.id.changeIconButton); executor = Executors.newSingleThreadExecutor(); handler = new Handler(); - iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon"+uid+".jpg"; + iconFlag = false; // アカウントのアイコンを表示 setIcon(iconButton); @@ -84,7 +98,16 @@ launcher.launch(new String[] {"image/*"}); } }); - + Button changeDefaultButton = findViewById(R.id.changeDefaultButton); + changeDefaultButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + icon = null; + iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + setIcon(iconButton); + iconFlag = true; + } + }); //変更確定ボタンを押した場合の動き Button changeDecisionButton = findViewById(R.id.changeConfirm); changeDecisionButton.setOnClickListener(new View.OnClickListener() { @@ -107,8 +130,8 @@ accountViewModel.changePw(uid, oldPw, newPw, token); } // アイコンが入力されているとき通信を行う - if(icon != null){ - accountViewModel.changeIcon(uid, icon, token); + if(iconFlag){ + accountViewModel.changeIcon(uid, icon, token); } } @@ -214,6 +237,8 @@ con.disconnect(); }catch (Exception e){ e.printStackTrace(); + iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + setIcon(iv); } }); } diff --git a/app/src/main/java/com/example/nemophila/PostActivity.java b/app/src/main/java/com/example/nemophila/PostActivity.java index 5289c59..7155c23 100644 --- a/app/src/main/java/com/example/nemophila/PostActivity.java +++ b/app/src/main/java/com/example/nemophila/PostActivity.java @@ -19,6 +19,7 @@ import android.widget.EditText; import android.widget.ImageButton; import android.widget.ImageView; +import android.widget.RatingBar; import android.widget.Spinner; import android.widget.TextView; @@ -144,49 +145,11 @@ } }); - //評価を入力するためのプルダウン - ArrayAdapter rateAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item); - rateAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - - rateAdapter.add("評価を選択"); - rateAdapter.add("1"); - rateAdapter.add("2"); - rateAdapter.add("3"); - rateAdapter.add("4"); - rateAdapter.add("5"); - Spinner rateSpinner = (Spinner) findViewById(R.id.inputRate); - rateSpinner.setAdapter(rateAdapter); - - //プルダウンが変更されたら実行 - rateSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { - - //レートプルダウンで選択が何もなかった時の動作 - @Override - public void onNothingSelected(AdapterView adapterView) {} - - //レートプルダウンで何か選択された時の動作 - @Override - public void onItemSelected(AdapterView adapterView, View view, int i, long l) { - String gettedRate = (String)rateSpinner.getSelectedItem(); - - //プルダウンで取得した評価をintに変換してrateに入れる - if(gettedRate != "評価を選択"){ - rate = Integer.parseInt(gettedRate); - //表示用にStringの星に変換 - String displayRate = ""; - for (int j = 0; j < 5; j++){ - if(rate > j ){ - displayRate += "★"; - }else{ - displayRate += "☆"; - } - } - TextView rateView = (TextView) findViewById(R.id.ratePostAc); - rateView.setText(displayRate); - }else if (gettedRate.equals("評価を選択")){ - rate = 0; - } - } + //評価を入力するためのレーティングバー + RatingBar ratingBar = findViewById(R.id.ratingBar); + //評価が入力された時の処理 + ratingBar.setOnRatingBarChangeListener((inputRate,gettingrate,fromUser) -> { + rate = (int)gettingrate; }); ArrayAdapter genreAdapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item); diff --git a/app/src/main/java/com/example/nemophila/RequestedActivity.java b/app/src/main/java/com/example/nemophila/RequestedActivity.java index 6a1ef91..1ef29da 100644 --- a/app/src/main/java/com/example/nemophila/RequestedActivity.java +++ b/app/src/main/java/com/example/nemophila/RequestedActivity.java @@ -11,11 +11,15 @@ import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.os.Bundle; +import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; +import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; @@ -23,11 +27,21 @@ import com.example.nemophila.entities.AccountNameJson; import com.example.nemophila.viewmodels.FriendViewModel; +import java.io.InputStream; +import java.net.HttpURLConnection; +import java.net.URL; import java.util.ArrayList; import java.util.Collection; import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class RequestedActivity extends AppCompatActivity { + + private final ExecutorService executor = Executors.newSingleThreadExecutor(); + private final Handler handler = new Handler(); + private String IconUrlString; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -105,10 +119,33 @@ data.setId(acj.getUid()); data.setName(acj.getName()); requestedDataSet.add(data); + + IconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + executor.execute(() -> { + try { + URL url = new URL(IconUrlString); + HttpURLConnection con = (HttpURLConnection) url.openConnection(); + con.connect(); + + InputStream is = con.getInputStream(); + + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> { + data.setIcon(bitmap); + adapter.notifyItemChanged(adapter.getPosition(data)); + }); + is.close(); + con.disconnect(); + } catch (Exception e){ + e.printStackTrace(); + } + }); } adapter.setList(requestedDataSet); rv.setAdapter(adapter); } + + }); } @@ -121,6 +158,7 @@ public void setList(List list) { this.list = list; } + public int getPosition(RequestedActivity.RequestedUserModel d) { return list.indexOf(d); } @NonNull @Override @@ -150,6 +188,7 @@ @Override public void onBindViewHolder(@NonNull RequestedViewHolder holder, int position) { holder.nameView.setText(list.get(position).getName()); + holder.iconView.setImageBitmap(list.get(position).getIcon()); } @Override @@ -166,12 +205,14 @@ public TextView nameView; public Button okButton; public Button noButton; + public ImageView iconView; public RequestedViewHolder(@NonNull View view) { super(view); nameView = (TextView) view.findViewById(R.id.textView3); okButton = view.findViewById(R.id.okButton); noButton = view.findViewById(R.id.noButton); + iconView = view.findViewById(R.id.imageView); } } @@ -179,6 +220,7 @@ public static class RequestedUserModel { private String name; private String id; + private Bitmap icon; public String getName() { return name; @@ -186,10 +228,16 @@ public String getId() { return id; } + public Bitmap getIcon() { + return icon; + } public void setName(String name) { this.name = name; } public void setId(String id) { this.id = id;} + public void setIcon(Bitmap icon) { + this.icon = icon; + } } } \ No newline at end of file diff --git a/app/src/main/java/com/example/nemophila/ShopActivity.java b/app/src/main/java/com/example/nemophila/ShopActivity.java index d9a9451..b0a0650 100644 --- a/app/src/main/java/com/example/nemophila/ShopActivity.java +++ b/app/src/main/java/com/example/nemophila/ShopActivity.java @@ -42,7 +42,6 @@ private ShopAcAdapter adapter = null; private final ExecutorService executor = Executors.newSingleThreadExecutor(); private final Handler handler = new Handler(); - private String iconUrlString; @Override protected void onCreate(Bundle savedInstanceState) { @@ -53,7 +52,6 @@ String shopName; String sid; String myUid = ((Nemophila)getApplication()).getUid(); - Bitmap iconBitmap; //NemophilaからcurrentShopを取得、店名の表示 shop = ((Nemophila)getApplication()).getCurrentShop(); @@ -80,6 +78,7 @@ } }); + //フレンドを取得 Collection friends = ((Nemophila)getApplication()).getFriends(); @@ -106,6 +105,7 @@ friendView.setText("選択中のフレンド:" + selectingFriendName); } + //RecyclerViewに表示する中身を格納するリストを宣言 List postsDataset = new ArrayList<>(); @@ -137,7 +137,7 @@ //postsDatasetを一旦クリアし、LiveDataから受け取ったデータを一つずつセット(重複しないように) postsDataset.clear(); - int postViewFrag; + boolean postViewFlag; for (Post post: ShopPosts){ //dataを宣言 dataに投稿の必要なデータをpostから受け取ってセットし、それをpostsDatasetに追加してリストを作る @@ -146,72 +146,57 @@ String genre = post.getGenre(); String uid = post.getUid(); - //投稿が自分もしくはフレンドのものかチェック - postViewFrag = 0; - if(uid.equals(myUid)) { - postViewFrag = 1; - }else { - for (AccountNameJson friendNJ : friends) { - if (uid.equals(friendNJ.getUid())) { - postViewFrag = 1; - } - } - } + //表示する投稿のみdataにセット(自分の投稿は必ず表示) + //選択が何もない場合は全ての投稿を、選択がある場合は一致する投稿をdataにセット + if (selectingGenre.isEmpty() || selectingGenre.contains(genre)) { + if (selectingFriend.isEmpty() || selectingFriend.contains(uid) || uid.equals(myUid)) { + data.setName(post.getName()); + data.setDate(post.getDate()); - //表示する投稿のみdataにセット - if(postViewFrag == 1) { - //選択が何もない場合は全ての投稿を、選択がある場合は一致する投稿をdataにセット - if (selectingGenre.isEmpty() || selectingGenre.contains(genre)) { - if (selectingFriend.isEmpty() || selectingFriend.contains(uid)) { - data.setName(post.getName()); - data.setDate(post.getDate()); - //アイコンをURLで取得、セット - - //rateはintで受け取った評価に対応した星の数のStringに変換してセット - int intRate = post.getRate(); - String strRate = ""; - for (int i = 0; i < 5; i++) { - if (intRate > i) { - strRate += "★"; - } else { - strRate += "☆"; - } + //rateはintで受け取った評価に対応した星の数のStringに変換してセット + int intRate = post.getRate(); + String strRate = ""; + for (int i = 0; i < 5; i++) { + if (intRate > i) { + strRate += "★"; + } else { + strRate += "☆"; } - data.setRate(strRate); - data.setGenre(genre); - data.setComment(post.getComment()); + } + data.setRate(strRate); + data.setGenre(genre); + data.setComment(post.getComment()); - //アイコン仮セット - //url作る - iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + //アイコン仮セット + String iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/test01.jpg"; + //本来はuidからurl作る +// String iconUrlString = "http://nitta-lab-www.is.konan-u.ac.jp/nemophila-data/icon" + myUid + ".jpg"; + executor.execute(() -> { + try{ + URL iconUrl = new URL(iconUrlString); + HttpURLConnection con = (HttpURLConnection) iconUrl.openConnection(); + con.connect(); - executor.execute(() -> { - try{ - URL url = new URL(iconUrlString); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); - con.connect(); + InputStream is = con.getInputStream(); - InputStream is = con.getInputStream(); + Bitmap bitmap = BitmapFactory.decodeStream(is); + handler.post(() -> { + data.setIcon(bitmap); + adapter.notifyItemChanged(adapter.getPosition(data)); + }); + is.close(); + con.disconnect(); + }catch (Exception e){ + e.printStackTrace(); + } + }); - Bitmap bitmap = BitmapFactory.decodeStream(is); - handler.post(() -> { - data.setIcon(bitmap); - adapter.notifyItemChanged(adapter.getPosition(data)); - }); - is.close(); - con.disconnect(); - }catch (Exception e){ - e.printStackTrace(); - } - }); - - //画像がなければViewの表示をgoneに、あればvisibleにして画像をセット + //画像がなければViewの表示をgoneに、あればvisibleにして画像をセット // if(post.get) { // } - //投稿一つの情報がdataに全部セットされたらDatasetに追加 - postsDataset.add(0, data); - } + //投稿一つの情報がdataに全部セットされたらDatasetに追加 + postsDataset.add(0, data); } } } @@ -256,26 +241,6 @@ holder.genreView.setText(list.get(position).getGenre()); holder.commentView.setText(list.get(position).getComment()); holder.iconView.setImageBitmap(list.get(position).getIcon()); -// //アイコン仮セット -// executor.execute(() -> { -// try{ -// URL url = new URL(iconUrlString); -// HttpURLConnection con = (HttpURLConnection) url.openConnection(); -// con.connect(); -// -// InputStream is = con.getInputStream(); -// -// Bitmap bitmap = BitmapFactory.decodeStream(is); -// handler.post(() -> { -// ImageView imageView = findViewById(R.id.shopAcIconPic); -// imageView.setImageBitmap(bitmap); -// }); -// is.close(); -// con.disconnect(); -// }catch (Exception e){ -// e.printStackTrace(); -// } -// }); } @Override @@ -304,9 +269,9 @@ genreView = (TextView) itemView.findViewById(R.id.shopAcGenre); commentView = (TextView) itemView.findViewById(R.id.shopAcComment); iconView = (ImageView) itemView.findViewById(R.id.shopAcIconPic); -// image1View = (ImageView) itemView.findViewById(R.id.shopAcImage1); -// image2View = (ImageView) itemView.findViewById(R.id.shopAcImage2); -// image3View = (ImageView) itemView.findViewById(R.id.shopAcImage3); + image1View = (ImageView) itemView.findViewById(R.id.shopAcImage1); + image2View = (ImageView) itemView.findViewById(R.id.shopAcImage2); + image3View = (ImageView) itemView.findViewById(R.id.shopAcImage3); } } @@ -318,9 +283,9 @@ private String genre; private String comment; private Bitmap icon; - private String image1; - private String image2; - private String image3; + private Bitmap image1; + private Bitmap image2; + private Bitmap image3; public String getName() { return name; @@ -362,20 +327,20 @@ this.icon = icon; } -// public String getImage() { return image1; } -// public void setImage1(String image1) { -// this.image1 = image1; -// } -// -// public String getImage2() { return image2; } -// public void setImage2(String image2) { -// this.image2 = image2; -// } -// -// public String getImage3() { return image3; } -// public void setImage3(String image3) { -// this.image3 = image3; -// } + public Bitmap getImage1() { return image1; } + public void setImage1(Bitmap image1) { + this.image1 = image1; + } + + public Bitmap getImage2() { return image2; } + public void setImage2(Bitmap image2) { + this.image2 = image2; + } + + public Bitmap getImage3() { return image3; } + public void setImage3(Bitmap image3) { + this.image3 = image3; + } } diff --git a/app/src/main/java/com/example/nemophila/SignUpActivity.java b/app/src/main/java/com/example/nemophila/SignUpActivity.java index 4296898..0cba923 100644 --- a/app/src/main/java/com/example/nemophila/SignUpActivity.java +++ b/app/src/main/java/com/example/nemophila/SignUpActivity.java @@ -27,9 +27,9 @@ private Nemophila nemophila; //座標指定 - private double defaultLat = 34.74; - private double defaultLong = 135.26; - private float defaultZoom = 15f; + private double defaultLat = 38.74; + private double defaultLong = 137.26; + private float defaultZoom = 5f; @Override protected void onCreate(Bundle savedInstanceState) { @@ -41,10 +41,6 @@ //Nemophilaにtokenとuidがある場合サインアップ画面をスキップ if ((nemophila.getUid() != null) && (nemophila.getToken() != null)){ - //座標指定(仮) - nemophila.setCameraLatitude(defaultLat); - nemophila.setCameraLongitude(defaultLong); - nemophila.setZoom(defaultZoom); Intent intent = new Intent(SignUpActivity.this,MapsActivity.class); startActivity(intent); diff --git a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java index 83ab4a8..95768e1 100644 --- a/app/src/main/java/com/example/nemophila/resources/AccountsRest.java +++ b/app/src/main/java/com/example/nemophila/resources/AccountsRest.java @@ -19,8 +19,6 @@ import retrofit2.http.Path; public interface AccountsRest { - @GET("accounts") - Call getAccounts(); @FormUrlEncoded @POST("accounts") @@ -69,7 +67,7 @@ @PUT("accounts/{uid}/icon") Call changeIcon( @Path("uid") String uid, - @Field("name") String icon, + @Field("icon") String icon, @Field("token") String token ); diff --git a/app/src/main/java/com/example/nemophila/resources/FriendsRest.java b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java index 85c6305..a5a4d22 100644 --- a/app/src/main/java/com/example/nemophila/resources/FriendsRest.java +++ b/app/src/main/java/com/example/nemophila/resources/FriendsRest.java @@ -69,5 +69,4 @@ @Path("requested_id") String requested_id, @Field("token") String token ); - } diff --git a/app/src/main/java/com/example/nemophila/resources/ShopsRest.java b/app/src/main/java/com/example/nemophila/resources/ShopsRest.java index c781f22..ec79553 100644 --- a/app/src/main/java/com/example/nemophila/resources/ShopsRest.java +++ b/app/src/main/java/com/example/nemophila/resources/ShopsRest.java @@ -34,24 +34,4 @@ @Field("longitude") double longitude, @Field("latitude") double latitude ); - - @GET("shops/{sid}") - Call getShop( - @Path("sid") String sid - ); - - @GET("shops/{sid}/posts") - Call getPosts( - @Path("sid") String sid - ); - - @FormUrlEncoded - @POST("shops/{sid}/posts/{uid}/{pid}") - Call deletePost( - @Path("sid") String sid, - - @Path("uid") String uid, - @Path("pid") String pid, - @Field("token") String token - ); } diff --git a/app/src/main/res/drawable-v24/nemophila_icon.jpg b/app/src/main/res/drawable-v24/nemophila_icon.jpg new file mode 100644 index 0000000..55926d3 --- /dev/null +++ b/app/src/main/res/drawable-v24/nemophila_icon.jpg Binary files differ diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9..ca3826a 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,74 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + xmlns:android="http://schemas.android.com/apk/res/android"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_post.xml b/app/src/main/res/layout/activity_post.xml index 2e6fd2c..f829316 100644 --- a/app/src/main/res/layout/activity_post.xml +++ b/app/src/main/res/layout/activity_post.xml @@ -6,6 +6,20 @@ android:layout_height="match_parent" tools:context=".PostActivity"> +