笔记69 | Android获取MP3文件的ID3信息工具类

时间:2022-06-01
本文章向大家介绍笔记69 | Android获取MP3文件的ID3信息工具类,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

代码块

HelloJni .java

/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* /* =  * Copyright (C) 2009 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * *      http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */package com.example.hellojni;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.CharArrayReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.Calendar;import java.util.List;import java.util.Scanner;import android.app.Activity;import android.app.ActivityManager;import android.app.Instrumentation;import android.app.NotificationManager;import android.app.ActivityManager.RunningTaskInfo;import android.content.BroadcastReceiver;import android.content.ComponentName;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.content.SharedPreferences;import android.content.pm.PackageManager;import android.content.pm.PackageManager.NameNotFoundException;import android.content.pm.ResolveInfo;import android.content.res.AssetManager;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.graphics.BitmapFactory; import android.graphics.Canvas;import android.graphics.Matrix;import android.graphics.Rect;import android.graphics.drawable.BitmapDrawable;import android.graphics.drawable.Drawable;import android.text.format.DateFormat;import android.util.DisplayMetrics;import android.util.Log;import android.view.Display;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.Surface;import android.view.View;import android.view.WindowManager;import android.view.View.OnClickListener;import android.widget.ImageButton;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import android.location.LocationManager;import android.net.Uri;import android.net.wifi.WifiManager;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.os.SystemClock;import android.provider.Settings;public class HelloJni //extends Activity668842{     static {         System.loadLibrary("hello-jni");    }    public static HelloJni pThis;    public native byte[]  getID3info(String fileName,int index);    public boolean isChinese(char c) {        return c >= 0x4E00 && c <= 0x9FA5;    }    public boolean isChinese(String str) {        if (str == null)            return false;        for (char c : str.toCharArray()) {            if (isChinese(c))                return true;         }        return false;    }    public String getID3(String fileName,int index)    {        byte[] get_arr = getID3info(fileName,index);        if(get_arr == null)  return "";        int arr_len = get_arr[1];        Log.i("FDebug","getID3----------------textEncoding="+get_arr[0] + " textSize="+get_arr[1]);        if(arr_len < 1)  return "";        byte[] info_arr = new byte[arr_len];          for(int i=0;i<arr_len;i++)        {            info_arr[i] = get_arr[5+i];        }        if(info_arr != null)        {                       String outStr = "";            for(int i=0;i<info_arr.length;i++)            {                               outStr += " "+Integer.toHexString(info_arr[i]&0xff);            }        //  Log.i("FDebug","getID3----------------outStr="+outStr);            String str = null;            String info = null;            try {                if(get_arr[0] == 0)                {                    str = new String(info_arr,"ISO_8859_1");                    info = new String(str.getBytes("ISO_8859_1"),"gb2312");                     Log.i("FDebug","getID3----------------str="+str);                                               Log.i("FDebug","getID3----------------info="+ info);                    if(isChinese(info))  return info;                }                if(get_arr[0] == 1)                {                    str = new String(info_arr,"UTF-16");                    info = new String(str.getBytes("UTF-16"),"gb2312");                    Log.i("FDebug","getID3----------------str="+str);                                               Log.i("FDebug","getID3----------------info="+ info);                    if(isChinese(info))  return info;                   }                if(get_arr[0] == 2)                {                    str = new String(info_arr,"UTF-16");                    info = new String(str.getBytes("UTF-16"),"gb2312");                     Log.i("FDebug","getID3----------------str="+str);                                               Log.i("FDebug","getID3----------------info="+ info);                    if(isChinese(info))  return info;                   }                if(get_arr[0] == 3)                {                    str = new String(info_arr,"UTF-8");                    //  info = new String(str.getBytes("UTF-8"),"gb2312");                      Log.i("FDebug","getID3----------------str="+str);                                               Log.i("FDebug","getID3----------------info="+ info);                    if(isChinese(info))  return info;                   }                return str;            } catch (UnsupportedEncodingException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }               return "";    }}
*/

获取:

public String g_Title = "";    public String g_Artist = "";    public String g_Album = "";    public String g_Year = "";    public void testID3(String fileName)    {        g_Title = "";        g_Artist = "";        g_Album = "";        HelloJni f = new HelloJni();        g_Title = f.getID3(fileName,0);        g_Artist = f.getID3(fileName,1);        g_Album = f.getID3(fileName,2);    }