前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记69 | Android获取MP3文件的ID3信息工具类

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

作者头像
项勇
发布2018-06-19 16:34:47
7890
发布2018-06-19 16:34:47
举报
文章被收录于专栏:项勇项勇

代码块

HelloJni .java

代码语言:javascript
复制
/*
* 提示:该行代码过长,系统自动注释不进行高亮。一键复制会移除系统注释 
* /* =  * 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 "";    }}
*/

获取:

代码语言:javascript
复制
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);    }
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 项勇 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代码块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档