Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
mozg-bolit
3 / 3 / 5
Регистрация: 20.09.2014
Сообщений: 300
1

Установка тегов при загрузки mp3

01.02.2018, 02:29. Просмотров 320. Ответов 1
Метки нет (Все метки)

Я загружаю файл в AsyncTask
После загрузки я отсылаю ресурс в функцию dr где она должна изменить metadata
Но получается что то не так
сам файл скачивается нормально, а вот функция записывает теги, и почему то обрезает файл до 640 байт
при изменение тега использовал эту библиотеку https://sites.google.com/site/eternalsandbox/myid3-for-android
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
 public static void dr(String d0){
        Log.d(TAG, "Dir " + d0);   //  /storage/emulated/0/дискотека_Леприконсы.mp3
        File src = new File(d0);
        MusicMetadataSet src_set = null;
        try {
            src_set = new MyID3().read(src);
        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } // read metadata
 
        if (src_set == null) // perhaps no metadata
        {
            Log.i("NULL", "NULL");
        }
        else {
            try {
                IMusicMetadata metadata = src_set.getSimplified();
                String artist = metadata.getArtist();
                String album = metadata.getAlbum();
                String song_title = metadata.getSongTitle();
                Number track_number = metadata.getTrackNumber();
                Log.i("artist", artist);
                Log.i("album", album);
            } catch (Exception e) {
                e.printStackTrace();
            }
            File dst = new File(d0);
            MusicMetadata meta = new MusicMetadata("name");
            meta.setAlbum("Chirag");
            meta.setArtist("CS");
            try {
                new MyID3().write(src, dst, src_set, meta);
            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ID3WriteException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }  // write updated metadata
        }
 
 
 
 
    }
 
 
 
 
    class DownloadTask extends AsyncTask<String,Integer,String>
    {
        String path;
        String name;
        String artist;
        String name_music;
        String duration;
        String new_folderr;
        ProgressDialog progressDialog;
 
        @Override
        public void onPreExecute() {
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setTitle("Download Progress....");
            progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressDialog.setMax(100);
            progressDialog.setProgress(0);
            progressDialog.show();
        }
 
        @Override
        protected String doInBackground(String... params) {
           path = params[0];
           name = params[1];
 
 
            new_folderr=mDBConnector.selectSettingDir();
            name=name+".mp3";
 
            int file_length = 0;
            Log.d(TAG, "Patch " + path);
            Log.d(TAG, "Name " + name);
            Log.d(TAG, "Dir " +new_folderr);
 
            try {
                URL url = new URL(path);
                URLConnection urlConnection = url.openConnection();
                urlConnection.connect();
                file_length = urlConnection.getContentLength();
                File new_folder = new File(new_folderr);
                if (!new_folder.exists())
                {
                    new_folder.mkdir();
                }
 
                File input_file = new File (new_folderr,name);
                InputStream inputStream =new BufferedInputStream(url.openStream(),file_length);
                byte[] data = new byte[1024];
                int total = 0;
                int count = 0;
                OutputStream outputStream = new FileOutputStream(input_file);
                while ((count=inputStream.read(data))!=-1)
                {
                    total+= count;
                    outputStream.write(data,0,count);
 
                    int prig=(int)  total/(file_length/100);
 
                    Log.d(TAG, "процент загрузки " + prig);
                    progressDialog.setProgress(prig);
                }
                inputStream.close();
                outputStream.close();
 
 
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return "Download Complete";
        }
 
 
        @Override
        public void onProgressUpdate(Integer... values) {
            super.onProgressUpdate(values);
 
            Log.d(TAG, "onProgressUpdate " + values);
        }
 
        @Override
        public void onPostExecute(String result) {
MainActivity.dr(new_folderr+"/"+name);
            progressDialog.hide();
            Toast.makeText(getApplicationContext(),result,Toast.LENGTH_LONG).show();
 
 
        }
    }
Добавлено через 35 минут
А все понял там в 33 стр Update

Добавлено через 1 час 14 минут
Вот такой вопрос как картинку добавить, у меня только получается её в строку считать, а дальше как то её нужно преобразовать то есть прочитать по байтам, пробовал byte[] Str2 = Str1.getBytes(); но выдает ошибку
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
Vector<ImageData> fileList = new Vector<ImageData>();
            URL url = new URL(imgs);
            url.getFile();
            URLConnection yc = url.openConnection();
            BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
            String inputLine;
            while ((inputLine = in.readLine()) != null) 
                System.out.println(inputLine);
                in.close();
            //   считываем в byte
            //    ImageData data = new ImageData(byte, "", "", 3);
            //    fileList.add(data);
            meta.setPictureList(fileList);
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.02.2018, 02:29
Ответы с готовыми решениями:

Установка тегов для файлов *.mp3 на лету (при скачивании)
Здравствуйте. Вот такой вопрос. У меня на сайте находятся файлы *.mp3. Можно сказать, что в...

Чтение MP3-тегов
Доброго времени суток. Помогите пожалуйста разобраться. Выбирается музыкальный файл, мр3 например....

Получение mp3-тегов
Здравствуйте, я хочу создать Mp3 плеер на VB. На сайте есть исходники:...

Чтение тегов из mp3 файла
Салют всем, это дига дига рем...)) Шутка. Вообщем, вопросик возник. С помощью чего, лучше...

Функция для чтения тегов mp3
Народ подскажите пожалуйста есть ли какаянибуть функция или способ прочтения прописи тегов в mp3...

1
VASSUV
MiThEoN
443 / 307 / 35
Регистрация: 31.10.2009
Сообщений: 505
Записей в блоге: 2
Завершенные тесты: 1
01.02.2018, 07:53 2
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
InputStream is = ...
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
 
int nRead;
byte[] data = new byte[16384];
 
while ((nRead = is.read(data, 0, data.length)) != -1) {
  buffer.write(data, 0, nRead);
}
 
buffer.flush();
 
return buffer.toByteArray();

Пример конвертирования InputStream в byte array первый который попался, можете поискать еще
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.02.2018, 07:53

Считывание тегов ID3V2 в mp3 файлах
откуда начинать считывать теги id3v2 в мр3 файлах. если можно пример кода сижу уже неделю не могу...

Чтение MP3-тегов: исправить код
Добрый день программисты! Есть вот такой кусочек кода namespace ConsoleApplication1 { ...

[NASM] [Linux] Переименование Mp3 тегов
Кто может помочь написать данную программу?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.