笔记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); }
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Android面试必备的JVM虚拟机制详解,看完之后简历上多一个技能!
- 如何在PHP中JSON在线解析
- Linux下如何克隆磁盘/分区命令dd入门
- Android自定义跑马灯文字效果
- Android实现图片自动切换功能(实例代码详解)
- Android Studio 3.6 正式版终于发布了,快来围观
- android使用ViewPager实现图片自动切换
- Android Studio 3.6 调试 smali的全过程
- Android 10 适配攻略小结
- Android P实现静默安装的方法示例(官方Demo)
- Android studio实现滑动开关
- Android实现TCP客户端支持读写操作
- Android通过命令连接wifi的方法(解决usb不能用问题)
- android studio使用SQLiteOpenHelper()建立数据库的方法
- Android自定义View绘制彩色圆弧