向音频文件添加元数据标签(如标题、艺术家、专辑)无效(Android MediaStore)

Adding metadata tags (like title, artist, album) to audio file not working (Android MediaStore)

我想创建一个音频文件并使用 Android MediaStore 设置歌曲的标题、艺术家和专辑标签。创建文件有效,但不幸的是标签似乎没有设置。我做错了什么?

我的代码:

    private long createFile(Context context, String fileName, InputStream fileContent) throws IOException {
        Uri audioCollection = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

        ContentValues contentValues = new ContentValues();
        contentValues.put(MediaStore.Audio.Media.DISPLAY_NAME, fileName);
        contentValues.put(MediaStore.Audio.Media.TITLE, "some title");
        contentValues.put(MediaStore.Audio.Media.ARTIST, "some artist");
        contentValues.put(MediaStore.Audio.Media.ALBUM, "some album");
        contentValues.put(MediaStore.Audio.Media.MIME_TYPE, "audio/mpeg");

        ContentResolver contentResolver = context.getContentResolver();
        Uri uri = contentResolver.insert(audioCollection, contentValues);

        FileOutputStream out = (FileOutputStream) contentResolver.openOutputStream(uri);
        FileChannel outChannel = out.getChannel();

        ReadableByteChannel inChannel = Channels.newChannel(fileContent);

        outChannel.transferFrom(inChannel, 0, Long.MAX_VALUE);

        out.close();

        long id = Long.parseLong(uri.getLastPathSegment());
        return id;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        AsyncTask.execute(() -> {
            Log.e(LOG_TAG, "STARTED");
            try {
                String songUrl = "https://file-examples-com.github.io/uploads/2017/11/file_example_MP3_700KB.mp3";
                InputStream in = new URL(songUrl).openStream();

                long id = createFile(getApplicationContext(), "songname", in);
                Log.e(LOG_TAG, "CREATED FILE WITH ID " + id);

            } catch (IOException e) {
                Log.e(LOG_TAG, "ERROR: " + e.getMessage());
            }
        });
    }

据我所知,现在无法使用 MediaStore 设置 ID3 标签,它只会将标签保存在设备本地,因此在将文件移动到另一台设备时元数据会丢失。

所以最后我创建了自己的标签编辑器(用于 ID3v1)。源代码,如果有人感兴趣:https://github.com/nh7dev/ID3v1TagEditorJava

ID3v2 更复杂:https://id3.org/id3v2.3.0

有趣 - 为什么你不使用 mp3tag f.e?

我正在寻找通过 android 上的自定义标签找到我的音乐的可能性。 foob​​ar mobile 会很好。

在 hydrogenaudio 上我收到了答案,android 根本不会索引它们。 也许您有一个有用的想法 ;-)

https://hydrogenaud.io/index.php?topic=122435.new#new