質問編集履歴

5

不要な一行削除しました。

2020/03/08 16:02

投稿

jafirm
jafirm

スコア6

test CHANGED
File without changes
test CHANGED
@@ -104,8 +104,6 @@
104
104
 
105
105
  実行環境はXperia5(android10)です。
106
106
 
107
- R.drawable.aは「No Image」の画像を読みだしました。
108
-
109
107
  ※参考にしたサイト
110
108
 
111
109
  http://android-note.open-memo.net/sub/sound__get_music_album.html

4

大幅に短縮しました。 分かりにくいところがあれば、またご指摘してください。

2020/03/08 16:02

投稿

jafirm
jafirm

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,194 +1,24 @@
1
- 音楽ファイルのファイルパスを取り出し
1
+ 外部ストレージ(SDカード)の音楽ファイルのサムネイルを取り出したいです。
2
-
3
- Bitmapに変換しグリッドに表示していきたいのですが、
4
-
5
- ファイルパスの取得の仕方が悪いのどうかわかりません。
6
-
7
- FileNotFoundExceptionが呼び出されます。
8
-
9
- あと、MediaStore.Images.Thumbnails.getThumbnailがAndroiStudioの候補で確認した時、
10
-
11
- 二重線が引かれているのは、非推奨だということでしょうか?
12
-
13
- 実行環境はXperia5(android10)です。
14
-
15
- R.drawable.aは「No Image」の画像を読みだしました。
16
-
17
- ※参考にしたサイト
18
-
19
- http://android-note.open-memo.net/sub/sound__get_music_album.html
20
-
21
- https://teratail.com/questions/26672
22
-
23
- https://seesaawiki.jp/w/moonlight_aska/d/%A5%B5%A5%E0%A5%CD%A5%A4%A5%EB%A4%F2%BC%E8%C6%C0%A4%B9%A4%EB
24
2
 
25
3
 
26
4
 
27
- 全文を載せま
5
+ 二つのコードを載せました
28
6
 
29
- MainActivity.java
7
+ 1つ目で音楽ファイルのパスを取り出しています。
30
8
 
31
- ```
9
+ 2つ目は取り出したファイルのパスを配列の一つから渡して、
32
10
 
11
+ Bitmap形式に変換しています。
12
+
13
+ そしてそれを「setImageBitmap」に渡して画像を表示したいですのですが、
14
+
33
- package com.example.audio_test;
15
+ FileNotFoundExceptionが検出されます。
34
16
 
35
17
 
36
18
 
37
- import androidx.annotation.NonNull;
19
+ 1つ目です。
38
20
 
39
- import androidx.appcompat.app.AppCompatActivity;
40
-
41
-
42
-
43
- import android.Manifest;
44
-
45
- import android.content.ContentResolver;
46
-
47
- import android.content.Context;
48
-
49
- import android.content.Intent;
50
-
51
- import android.content.pm.PackageManager;
52
-
53
- import android.database.Cursor;
54
-
55
- import android.graphics.Bitmap;
56
-
57
- import android.graphics.BitmapFactory;
58
-
59
- import android.media.MediaMetadataRetriever;
60
-
61
- import android.media.MediaPlayer;
62
-
63
- import android.os.Build;
64
-
65
- import android.os.Bundle;
66
-
67
- import android.provider.MediaStore;
68
-
69
- import android.view.LayoutInflater;
70
-
71
- import android.view.View;
72
-
73
- import android.view.ViewGroup;
74
-
75
- import android.widget.AdapterView;
76
-
77
- import android.widget.BaseAdapter;
78
-
79
- import android.widget.GridView;
80
-
81
- import android.widget.ImageView;
82
-
83
- import android.widget.TextView;
84
-
85
- import android.widget.Toast;
86
-
87
-
88
-
89
- import com.example.audio_test.R;
90
-
91
-
92
-
93
- import java.util.ArrayList;
94
-
95
- import java.util.List;
96
-
97
-
98
-
99
- public class MainActivity extends AppCompatActivity {
100
-
101
-
102
-
103
- private MediaPlayer mediaPlayer;
104
-
105
- private final int REQUEST_PERMISSION = 10;
106
-
107
-
108
-
109
- @Override
110
-
111
- protected void onCreate(Bundle savedInstanceState) {
112
-
113
- super.onCreate(savedInstanceState);
114
-
115
- setContentView(R.layout.activity_main);
116
-
117
-
118
-
119
- if (Build.VERSION.SDK_INT >= 23) {
120
-
121
- checkPermission();
122
-
123
- } else {
21
+ ```
124
-
125
- readContentActivity();
126
-
127
- }
128
-
129
- }
130
-
131
-
132
-
133
- public void checkPermission() {
134
-
135
- if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
136
-
137
- readContentActivity();
138
-
139
- } else {
140
-
141
- requestLocationPermission();
142
-
143
- }
144
-
145
- }
146
-
147
-
148
-
149
- private void requestLocationPermission() {
150
-
151
- if (shouldShowRequestPermissionRationale(Manifest.permission.READ_EXTERNAL_STORAGE)) {
152
-
153
- requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
154
-
155
- REQUEST_PERMISSION);
156
-
157
- } else {
158
-
159
- Toast.makeText(this, "許可されないとアプリが実行できません。", Toast.LENGTH_SHORT).show();
160
-
161
- requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,}, REQUEST_PERMISSION);
162
-
163
- }
164
-
165
- }
166
-
167
-
168
-
169
- @Override
170
-
171
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
172
-
173
- if (requestCode == REQUEST_PERMISSION) {
174
-
175
-
176
-
177
- if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
178
-
179
- readContentActivity();
180
-
181
- } else {
182
-
183
- Toast.makeText(this, "これ以上なにもできません。", Toast.LENGTH_SHORT).show();
184
-
185
- }
186
-
187
- }
188
-
189
- }
190
-
191
-
192
22
 
193
23
  private void readContentActivity() {
194
24
 
@@ -197,8 +27,6 @@
197
27
  Cursor cursor = null;
198
28
 
199
29
  List<String> img = new ArrayList<>();
200
-
201
- List<String> title = new ArrayList<>();
202
30
 
203
31
  try {
204
32
 
@@ -214,17 +42,11 @@
214
42
 
215
43
  img = new ArrayList<>();
216
44
 
217
- title = new ArrayList<>();
218
-
219
-
220
-
221
45
  do {
222
46
 
223
47
  img.add(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA)));
224
48
 
225
49
 
226
-
227
- title.add(cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));
228
50
 
229
51
  } while (cursor.moveToNext());
230
52
 
@@ -242,157 +64,11 @@
242
64
 
243
65
  }
244
66
 
67
+ ```
245
68
 
69
+ 二つ目です。
246
70
 
247
- GridView gridview =findViewById(R.id.gridview);
248
-
249
- GridAdapter adapter = new GridAdapter(this.getApplicationContext(), R.layout.grid_items, img, title);
250
-
251
-
252
-
253
- gridview.setAdapter(adapter);
254
-
255
-
256
-
257
-
258
-
259
- }
260
-
261
-
262
-
263
- class GridAdapter extends BaseAdapter {
264
-
265
-
266
-
267
- class ViewHolder {
268
-
269
- ImageView imageView;
270
-
271
- TextView textView;
272
-
273
- }
274
-
275
-
276
-
277
- private List<String> Gimg;
278
-
279
- private List<String> Gtitle ;
280
-
281
- private LayoutInflater inflater;
282
-
283
- private int layoutId;
284
-
285
-
286
-
287
- GridAdapter(Context context,int layoutId, List<String> IMG, List<String> TITLE) {
288
-
289
- super();
290
-
291
- this.inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
292
-
293
- this.layoutId = layoutId;
294
-
295
- Gimg = new ArrayList<>();
296
-
297
- Gtitle = new ArrayList<>();
298
-
299
- Gimg = IMG;
300
-
301
- Gtitle = TITLE;
302
-
303
- }
304
-
305
-
306
-
307
- @Override
308
-
309
- public View getView(int position, View convertView, ViewGroup parent) {
310
-
311
-
312
-
313
- ViewHolder holder;
314
-
315
- if(convertView == null) {
316
-
317
- convertView = inflater.inflate(layoutId, parent, false);
318
-
319
- holder = new ViewHolder();
320
-
321
-
322
-
323
- holder.imageView = convertView.findViewById(R.id.image_view);
324
-
325
- holder.textView = convertView.findViewById(R.id.text_view);
326
-
327
-
328
-
329
- convertView.setTag(holder);
330
-
331
-
332
-
333
- }
334
-
335
- else {
71
+ ```
336
-
337
- holder = (ViewHolder) convertView.getTag();
338
-
339
- }
340
-
341
-
342
-
343
- if(Gimg.get(position) != null) {
344
-
345
- holder.imageView.setImageBitmap(getArtWork(Gimg.get(position)));
346
-
347
- } else {
348
-
349
- holder.imageView.setImageResource(R.drawable.a);
350
-
351
- }
352
-
353
-
354
-
355
-
356
-
357
- holder.textView.setText(Gtitle.get(position));
358
-
359
- return convertView;
360
-
361
- }
362
-
363
-
364
-
365
- @Override
366
-
367
- public int getCount() {
368
-
369
- // List<String> imgList の全要素数を返す
370
-
371
- return Gimg.size();
372
-
373
- }
374
-
375
-
376
-
377
- @Override
378
-
379
- public Object getItem(int position) {
380
-
381
- return null;
382
-
383
- }
384
-
385
-
386
-
387
- @Override
388
-
389
- public long getItemId(int position) {
390
-
391
- return 0;
392
-
393
- }
394
-
395
-
396
72
 
397
73
  public Bitmap getArtWork(String filepath) {
398
74
 
@@ -412,8 +88,6 @@
412
88
 
413
89
  bm = BitmapFactory.decodeByteArray(data, 0, data.length);
414
90
 
415
- // result = Bitmap.createScaledBitmap(bm, width , 140, false);
416
-
417
91
  }
418
92
 
419
93
 
@@ -424,200 +98,18 @@
424
98
 
425
99
  }
426
100
 
427
- }
428
-
429
-
430
-
431
- }
432
-
433
- ```
434
-
435
- AndroidManifest.xml
436
-
437
- ```
438
-
439
- <?xml version="1.0" encoding="utf-8"?>
440
-
441
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
442
-
443
- package="com.example.audio_test">
444
-
445
-
446
-
447
-
448
-
449
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
450
-
451
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
452
-
453
-
454
-
455
- <application
456
-
457
- android:allowBackup="true"
458
-
459
- android:icon="@mipmap/ic_launcher"
460
-
461
- android:label="@string/app_name"
462
-
463
- android:roundIcon="@mipmap/ic_launcher_round"
464
-
465
- android:supportsRtl="true"
466
-
467
- android:theme="@style/AppTheme">
468
-
469
- <activity android:name=".MainActivity">
470
-
471
- <intent-filter>
472
-
473
- <action android:name="android.intent.action.MAIN" />
474
-
475
-
476
-
477
- <category android:name="android.intent.category.LAUNCHER" />
478
-
479
- </intent-filter>
480
-
481
- </activity>
482
-
483
- </application>
484
-
485
-
486
-
487
- </manifest>
488
-
489
101
  ```
490
102
 
491
103
 
492
104
 
493
- grid_items.xml
105
+ 実行環境はXperia5(android10)です。
494
106
 
495
- ```<?xml version="1.0" encoding="utf-8"?>
107
+ R.drawable.aは「No Image」の画像を読みだしました。
496
108
 
497
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
109
+ ※参考にしたサイト
498
110
 
499
- android:layout_width="match_parent"
111
+ http://android-note.open-memo.net/sub/sound__get_music_album.html
500
112
 
501
- android:layout_height="match_parent"
113
+ https://teratail.com/questions/26672
502
114
 
503
- android:background="#ffffff"
504
-
505
- android:padding="3dp"
506
-
507
- >
508
-
509
-
510
-
511
- <ImageView
512
-
513
- android:id="@+id/image_view"
514
-
515
- android:layout_width="match_parent"
516
-
517
- android:layout_height="140dp"
518
-
519
- android:scaleType="centerCrop"
520
-
521
- android:contentDescription="@string/description"/>
522
-
523
-
524
-
525
- <TextView
526
-
527
- android:id="@+id/text_view"
528
-
529
- android:gravity="center"
530
-
531
- android:textSize="18sp"
532
-
533
- android:textColor="#fff"
534
-
535
- android:shadowDx="2"
536
-
537
- android:shadowDy="2"
538
-
539
- android:shadowRadius="2"
540
-
541
- android:shadowColor="#444"
542
-
543
- android:layout_margin="10dp"
544
-
545
- android:layout_alignParentBottom="true"
546
-
547
- android:layout_width="match_parent"
548
-
549
- android:layout_height="wrap_content"/>
550
-
551
-
552
-
553
- </RelativeLayout>
554
-
555
- ```
556
-
557
-
558
-
559
- actvity_main.xml
560
-
561
- ```
562
-
563
- <?xml version="1.0" encoding="utf-8"?>
564
-
565
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
115
+ https://seesaawiki.jp/w/moonlight_aska/d/%A5%B5%A5%E0%A5%CD%A5%A4%A5%EB%A4%F2%BC%E8%C6%C0%A4%B9%A4%EB
566
-
567
- android:layout_width="match_parent"
568
-
569
- android:layout_height="match_parent"
570
-
571
- android:background="#ffffff"
572
-
573
- android:padding="3dp"
574
-
575
- >
576
-
577
-
578
-
579
- <ImageView
580
-
581
- android:id="@+id/image_view"
582
-
583
- android:layout_width="match_parent"
584
-
585
- android:layout_height="140dp"
586
-
587
- android:scaleType="centerCrop"
588
-
589
- android:contentDescription="@string/description"/>
590
-
591
-
592
-
593
- <TextView
594
-
595
- android:id="@+id/text_view"
596
-
597
- android:gravity="center"
598
-
599
- android:textSize="18sp"
600
-
601
- android:textColor="#fff"
602
-
603
- android:shadowDx="2"
604
-
605
- android:shadowDy="2"
606
-
607
- android:shadowRadius="2"
608
-
609
- android:shadowColor="#444"
610
-
611
- android:layout_margin="10dp"
612
-
613
- android:layout_alignParentBottom="true"
614
-
615
- android:layout_width="match_parent"
616
-
617
- android:layout_height="wrap_content"/>
618
-
619
-
620
-
621
- </RelativeLayout>
622
-
623
- ```

3

R.drawable.aについての説明を追加しました。

2020/03/08 16:01

投稿

jafirm
jafirm

スコア6

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  実行環境はXperia5(android10)です。
14
14
 
15
+ R.drawable.aは「No Image」の画像を読みだしました。
16
+
15
17
  ※参考にしたサイト
16
18
 
17
19
  http://android-note.open-memo.net/sub/sound__get_music_album.html

2

実行環境について追記しました。

2020/03/07 11:31

投稿

jafirm
jafirm

スコア6

test CHANGED
File without changes
test CHANGED
@@ -10,6 +10,8 @@
10
10
 
11
11
  二重線が引かれているのは、非推奨だということでしょうか?
12
12
 
13
+ 実行環境はXperia5(android10)です。
14
+
13
15
  ※参考にしたサイト
14
16
 
15
17
  http://android-note.open-memo.net/sub/sound__get_music_album.html

1

MediaStore.Images.Thumbnails.getThumbnailについての質問を追記しました。

2020/03/07 08:16

投稿

jafirm
jafirm

スコア6

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,10 @@
6
6
 
7
7
  FileNotFoundExceptionが呼び出されます。
8
8
 
9
+ あと、MediaStore.Images.Thumbnails.getThumbnailがAndroiStudioの候補で確認した時、
10
+
11
+ 二重線が引かれているのは、非推奨だということでしょうか?
12
+
9
13
  ※参考にしたサイト
10
14
 
11
15
  http://android-note.open-memo.net/sub/sound__get_music_album.html