博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android实战技巧之十九:android studio导出jar包(Module)并获得手机信息
阅读量:5825 次
发布时间:2019-06-18

本文共 4313 字,大约阅读时间需要 14 分钟。

AS中并没有独立的Module 工程,可是能够在普通的Project中增加Module。所谓的Module就是我们通常所指的模块化的一个单元。并经常以jar包的形式存在。以下以一个获取手机信息的样例演示AS中的模块化。

一、项目中新建Module

File—>New Module,具体见下图。

二、新建Java类

新建一个PhoneInfo类,内容例如以下:

package com.linc.mylibrary;import android.content.Context;import android.net.wifi.WifiInfo;import android.net.wifi.WifiManager;import android.os.Build;import android.telephony.TelephonyManager;import android.text.format.Formatter;import android.util.Log;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;/** * Created by linc on 15-3-19. */public class PhoneInfo {
private String TAG = "PhoneInfo"; private Context mContext; private TelephonyManager mPhoneManager; public PhoneInfo(Context context) { mContext = context; mPhoneManager = (TelephonyManager)mContext.getSystemService(Context.TELEPHONY_SERVICE); } public String getDeviceId() { return mPhoneManager.getDeviceId(); } public String getPhoneModule() { return Build.MODEL; } public String getSerialNumber() { return Build.SERIAL; } public String getPhoneNumber() { return mPhoneManager.getLine1Number(); } public String getMacAddress(){ String result = ""; WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); result = wifiInfo.getMacAddress(); Log.i(TAG, "macAdd:" + result); return result; } public String[] getCpuInfo() { String str1 = "/proc/cpuinfo"; String str2 = ""; String[] cpuInfo = {
"", ""}; //1-cpu型号 //2-cpu频率 String[] arrayOfString; try { FileReader fr = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader(fr, 8192); str2 = localBufferedReader.readLine(); arrayOfString = str2.split("\\s+"); for (int i = 2; i < arrayOfString.length; i++) { cpuInfo[0] = cpuInfo[0] + arrayOfString[i] + " "; } str2 = localBufferedReader.readLine(); arrayOfString = str2.split("\\s+"); cpuInfo[1] += arrayOfString[2]; localBufferedReader.close(); } catch (IOException e) { } Log.i(TAG, "cpuinfo:" + cpuInfo[0] + " " + cpuInfo[1]); return cpuInfo; } public String getTotalMemory() { String str1 = "/proc/meminfo";// 系统内存信息文件 String str2; String[] arrayOfString; long initial_memory = 0; try { FileReader localFileReader = new FileReader(str1); BufferedReader localBufferedReader = new BufferedReader( localFileReader, 8192); str2 = localBufferedReader.readLine();// 读取meminfo第一行。系统总内存大小 arrayOfString = str2.split("\\s+"); for (String num : arrayOfString) { Log.i(str2, num + "\t"); } initial_memory = Integer.valueOf(arrayOfString[1]).intValue() * 1024;// 获得系统总内存,单位是KB,乘以1024转换为Byte localBufferedReader.close(); } catch (IOException e) { } return Formatter.formatFileSize(mContext, initial_memory);// Byte转换为KB或者MB。内存大小规格化 }}

并在Module的AndroidManifest文件里增加两个权限:

三、app中引入此module

在app的build.gradle中增加此module的dependency。例如以下:

dependencies {    compile 'com.android.support:appcompat-v7:21.0.3'    compile project(':mylibrary')}

在app的MainActivity中增加測试代码:

@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        PhoneInfo info = new PhoneInfo(this);        Log.d(TAG,"devices id: "+info.getDeviceId());        Log.d(TAG,"getPhoneModule: "+info.getPhoneModule());        Log.d(TAG,"getSerialNumber: "+info.getSerialNumber());        Log.d(TAG,"getPhoneNumber: "+info.getPhoneNumber());        Log.d(TAG,"getMacAddress: "+info.getMacAddress());        Log.d(TAG,"getCpuInfo: "+info.getCpuInfo());        Log.d(TAG,"getTotalMemory: "+info.getTotalMemory());    }

四、jar的生成

项目编译之后jar会在以下的文件夹找到:

./mylibrary/build/intermediates/bundles/debug/classes.jar./mylibrary/build/intermediates/bundles/release/classes.jar

五、Module的移除

先要在File—>Project Structure中将此module“减“掉后才干在项目中Module右键的Delete键可用。

參考:

你可能感兴趣的文章
聊聊flink的RestClientConfiguration
查看>>
在CentOS上搭建git仓库服务器以及mac端进行克隆和提交到远程git仓库
查看>>
測試文章
查看>>
Flex很难?一文就足够了
查看>>
【BATJ面试必会】JAVA面试到底需要掌握什么?【上】
查看>>
CollabNet_Subversion小结
查看>>
mysql定时备份自动上传
查看>>
Linux 高可用集群解决方案
查看>>
17岁时少年决定把海洋洗干净,现在21岁的他做到了
查看>>
linux 启动oracle
查看>>
《写给大忙人看的java se 8》笔记
查看>>
倒计时:计算时间差
查看>>
Linux/windows P2V VMWare ESXi
查看>>
Windows XP倒计时到底意味着什么?
查看>>
tomcat一步步实现反向代理、负载均衡、内存复制
查看>>
运维工程师在干什么学些什么?【致菜鸟】
查看>>
Linux中iptables详解
查看>>
java中回调函数以及关于包装类的Demo
查看>>
maven异常:missing artifact jdk.tools:jar:1.6
查看>>
终端安全求生指南(五)-——日志管理
查看>>