定位位置
MtkSettings\src\com\android\settings\deviceinfo\imei
用ARDC工具,打开性能监控,进入到所需要修改的页面,即可定位到文件位置,除了极少数无法定位,比如settings中由Adapter填充数据的页面
需求
进入Android设置点击Android系统中点击IMEI号,弹出对话框,在原有的对话框空白处加上由IMEI号生成的条形码
效果
改之前:
修改之后:
jar包相关
编写工具类
BitmapUtil.java
package com.android.settings.deviceinfo.imei;
import android.graphics.Bitmap;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.MultiFormatWriter;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
public class BitmapUtil {
private static final int BLACK = 0xff000000;
private static final int WHITE = 0xFFFFFFFF;
private static BarcodeFormat barcodeFormat = BarcodeFormat.CODE_128;
public static Bitmap creatBarcode(String contents, int desiredWidth,int desiredHeight) {
MultiFormatWriter writer = new MultiFormatWriter();
BitMatrix result=null;
try {
result = writer.encode(contents, barcodeFormat, desiredWidth,
desiredHeight);
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int width = result.getWidth();
int height = result.getHeight();
int[] pixels = new int[width * height];
// All are 0, or black, by default
for (int y = 0; y < height; y++) {
int offset = y * width;
for (int x = 0; x < width; x++) {
pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;
}
}
Bitmap bitmap = Bitmap.createBitmap(width, height,
Bitmap.Config.ARGB_8888);
bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
return bitmap;
}
}
找到对应的xml
<ImageView
android:id="@+id/barcode_imei"
android:layout_width="700dp"
android:layout_height="wrap_content"
android:layout_gravity="center"/>
同时在填充数据的java文件中加上setImage方法(即自定义对话框数据填充文件)
public void setImage(int viewId,Bitmap bitmap){
final ImageView imageView = mRootView.findViewById(viewId);
if(imageView != null){
imageView.setImageBitmap(bitmap);
}
}
找到弹出对话框的位置
CharSequence sequence = getTextAsDigits(mTelephonyManager.getImei(mSlotId));
String mImeiValue = sequence.toString();
if(mImeiValue.isEmpty()){
Log.i(TAG,"mImeiValue is empty");
}else{
Bitmap bitmap = BitmapUtil.createBarcode(mImeiValue,550,65);
//IMEI_VALUE_IMAGE = R.id.barcode_imei
mDialog.setImage(IMEI_VALUE_IMAGE,bitmap);
//IMEI_VALUE_IMAGE = R.id.barcode_imei
mDialog.setImage(IMEI_VALUE_IMAGE,bitmap);
}
}