代码块
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);
}