diff --git a/app/src/main/java/com/example/nemophila/PostActivity.java b/app/src/main/java/com/example/nemophila/PostActivity.java index e4233bd..fbf2ff5 100644 --- a/app/src/main/java/com/example/nemophila/PostActivity.java +++ b/app/src/main/java/com/example/nemophila/PostActivity.java @@ -41,6 +41,7 @@ import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.nio.file.Files; +import java.util.ArrayList; import java.util.Base64; import java.util.List; @@ -60,44 +61,22 @@ private String shopName; private ImageButton[] deleteButtons; private ImageView[] postImages; - private List uriLists; + private List uriLists = new ArrayList(3); private PostsViewModel postsViewModel; private ShopsViewModel shopsViewModel; private Nemophila nemophila; - //画像挿入 - private ActivityResultLauncher launcher = registerForActivityResult(new ActivityResultContracts.OpenMultipleDocuments(), new ActivityResultCallback>() { + //画像挿入ランチャー起動 + private ActivityResultLauncher launcher = registerForActivityResult(new ActivityResultContracts.OpenDocument(), new ActivityResultCallback() { @Override - public void onActivityResult(List uriList) { - uriLists = uriList; + public void onActivityResult(Uri uri) { - postImages[0] = findViewById(R.id.imageView1); - postImages[1] = findViewById(R.id.imageView2); - postImages[2] = findViewById(R.id.imageView3); + uriLists.add(uri); + System.out.println("登録された画像数:"+uriLists.size()); - for(int i = 0; i < 3 && i < uriLists.size(); i++){ - postImages[i].setImageURI(uriLists.get(i)); - deleteButtons[i].setVisibility(View.VISIBLE); - -// System.out.println(uriLists.get(i)); - - try { - InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(uriLists.get(i)); - Bitmap bitmap = BitmapFactory.decodeStream(new BufferedInputStream(inputStream)); - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); - byte[] byteArray = stream.toByteArray(); - String encoded = Base64.getEncoder().encodeToString(byteArray); -// System.out.println(encoded); -// System.out.println(encoded.length()); - img[i] = encoded; - - } catch (FileNotFoundException e) { - e.printStackTrace(); - } - } - + postImages[uriLists.size()-1].setImageURI(uriLists.get(uriLists.size()-1)); + deleteButtons[uriLists.size()-1].setVisibility(View.VISIBLE); } }); @@ -146,12 +125,10 @@ shopName = shop.getName(); } - //店名を表示 TextView textView = findViewById(R.id.shopNamePoatAc); textView.setText(shopName); - //左上のボタンでキャンセル(ShopActivityに戻る) //確認用ダイアログを入れたい Button returnButton = (Button)findViewById(R.id.postAcReturnButton); @@ -213,18 +190,24 @@ } }); +// 投稿画像 + postImages[0] = findViewById(R.id.imageView1); + postImages[1] = findViewById(R.id.imageView2); + postImages[2] = findViewById(R.id.imageView3); Button selectPictureButton = (Button)findViewById(R.id.selectpicturebutton); selectPictureButton.setOnClickListener(new View.OnClickListener(){ public void onClick(View v) { -// 画像選択(3枚) - launcher.launch(new String[]{"image/*"}); + if (uriLists.size() < 3) { +// 画像選択(Max3枚) + launcher.launch(new String[]{"image/*"}); + }else{ + Snackbar.make(v, "選択できる画像は最大で3枚です。", Snackbar.LENGTH_SHORT).show(); + } } }); -// 写真の削除ボタン 製作途中 - - +// 写真の削除ボタン deleteButtons[0]= (ImageButton) findViewById(R.id.deleteButton1); deleteButtons[1]= (ImageButton) findViewById(R.id.deleteButton2); deleteButtons[2]= (ImageButton) findViewById(R.id.deleteButton3); @@ -233,57 +216,52 @@ deleteButtons[1].setVisibility(View.INVISIBLE); deleteButtons[2].setVisibility(View.INVISIBLE); +// ボタン1 deleteButtons[0].setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - postImages[0].setImageURI(null); - uriLists.set(0, null); -// uriLists.remove(1); - System.out.println("削除ボタン1"); -// if (postImages.length) - for (int i = 0; i < postImages.length-1; i++){ - postImages[i].setImageURI(uriLists.get(i+1)); -// postImages[i].setImageURI(uriList.get(i)); - postImages[i+1].setImageURI(null); -// uriLists.remove(i); - uriLists.set(i+1, null); -// postImages[i+1] = null; - System.out.println(uriLists.get(i)); - } - for (int i = 0; i < postImages.length; i++){ - if (uriLists.get(i) == null){ - deleteButtons[i].setVisibility(View.INVISIBLE); + System.out.println("削除ボタン1"); + uriLists.remove(0); + System.out.println("urilist要素数" +uriLists.size()); + if (uriLists.size() == 0){ + postImages[0].setImageURI(null); + deleteButtons[0].setVisibility(View.INVISIBLE); + }else { + for (int i = 0; i < uriLists.size(); i++) { + postImages[i].setImageURI(uriLists.get(i)); + postImages[uriLists.size()].setImageURI(null); + deleteButtons[uriLists.size()].setVisibility(View.INVISIBLE); } } } }); - +// ボタン2 deleteButtons[1].setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - postImages[1].setImageURI(null); - uriLists.set(1, null); -// postImages[1] = null; - System.out.println("削除ボタン2"); - for (int i = 1; i < postImages.length-1; i++){ - postImages[i].setImageURI(uriLists.get(i+1)); - postImages[i+1].setImageURI(null); -// postImages[i+1] = null; - } - for (int i = 0; i < postImages.length; i++){ - if (uriLists.get(i) == null){ - deleteButtons[i].setVisibility(View.INVISIBLE); - } + System.out.println("削除ボタン2"); + uriLists.remove(1); + System.out.println("urilist要素数" + uriLists.size()); + for (int i = 0; i < uriLists.size(); i++) { + postImages[i].setImageURI(uriLists.get(i)); + postImages[uriLists.size()].setImageURI(null); + deleteButtons[uriLists.size()].setVisibility(View.INVISIBLE); } } }); +// ボタン3 deleteButtons[2].setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - postImages[2].setImageURI(null); - System.out.println("削除ボタン3"); - deleteButtons[2].setVisibility(View.INVISIBLE); + System.out.println("削除ボタン3"); + uriLists.remove(2); + System.out.println("urilist要素数" +uriLists.size()); + for (int i = 0; i < uriLists.size(); i++) { + postImages[i].setImageURI(uriLists.get(i)); + postImages[uriLists.size()].setImageURI(null); + deleteButtons[uriLists.size()].setVisibility(View.INVISIBLE); + } } }); @@ -293,19 +271,32 @@ public void onClick(View v){ System.out.println("投稿ボタンのクリック"); -// EditText editGenre = (EditText) findViewById(R.id.inputGenre); -// genre = editGenre.getText().toString(); - EditText editComment = (EditText) findViewById(R.id.inputComment); comment = editComment.getText().toString(); - - //評価が未入力の時 + //評価とジャンルが入力済の時 if(rate != 0 && genre != null) { - //評価とジャンル入力済の時 + //画像をエンコードしてサーバーに送る処理 + for (int i = 0; i < uriLists.size(); i++) { + try { + InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(uriLists.get(i)); + Bitmap bitmap = BitmapFactory.decodeStream(new BufferedInputStream(inputStream)); + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); + byte[] byteArray = stream.toByteArray(); + String encoded = Base64.getEncoder().encodeToString(byteArray); + img[i] = encoded; + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + if (shop == null) { + //新規店舗に投稿 shopsViewModel.createShop(shopName, nemophila.getCurrentLongitude(), nemophila.getCurrentLatitude()); } else { + //既存店舗に投稿 postsViewModel.createPost(uid, token, sid, rate, genre, comment, img[0], img[1], img[2]); System.out.println("既存店舗に投稿"); System.out.println("lat" + nemophila.getCurrentLatitude() + "\nlong" + nemophila.getCurrentLongitude()); @@ -321,14 +312,12 @@ //評価未入力 System.out.println("評価未設定クリック"); Snackbar.make(v, "評価を選択してください", Snackbar.LENGTH_SHORT).show(); -// Intent intent = new Intent(getApplication(), ShopActivity.class); -// startActivity(intent); }else if (genre == null){ + //ジャンル未入力 System.out.println("ジャンル未設定クリック"); Snackbar.make(v, "ジャンルを選択してください", Snackbar.LENGTH_SHORT).show(); } } - }); } }