我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android实现屏幕锁定源码详解

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android实现屏幕锁定源码详解

最近有朋友问屏幕锁定的问题,自己也在学习,网上找了下也没太详细的例子,看的资料书上也没有有关屏幕锁定程序的介绍,下个小决心,自己照着官方文档学习下,现在做好了,废话不多说,先发下截图,看下效果,需要注意的地方会加注释,有问题的朋友可以直接留言,我们共同学习交流,共同提高进步!直接看效果图:

一:未设置密码时进入系统设置的效果图如下:

 

二:设置密码方式预览:

三:密码解密效果图

四:九宫格解密时的效果图

下面来简单的看下源码吧,此处讲下,这个小DEMO也是临时学习下的,有讲的不明白的地方请朋友直接批评指出,有错肯定改的,吼吼看代码:

主控制类:


 package com.xiaoma.policymanager.demo;
  import android.app.Activity;
  import android.app.admin.DevicePolicyManager;
  import android.content.Intent;
  import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
  import android.widget.Button;
  import android.widget.EditText;
  import android.widget.LinearLayout;
  import android.widget.Spinner;
  import android.widget.TextView;
  
  public class PolicySetupActivity extends Activity {
  private static final int REQ_ACTIVATE_DEVICE_ADMIN = 10;
  private static final String SCREEN_ID_KEY = "LAYOUT_ID";
  
  private static final String APP_PREF = "APP_PREF";
  
  private static final int UNKNOWN_SCREEN_ID = -1;
  
  private Spinner mPasswordQualityInputField;
  private EditText mPasswordLengthInputField;
  private EditText mPasswordMinUppercaseInputField;
  
  private Policy mPolicy;
  
  private int mCurrentScreenId;
  @Override
  public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  mPolicy = new Policy(this);
  }
  @Override
  protected void onResume() {
  super.onResume();
  
  SharedPreferences prefs = getSharedPreferences(APP_PREF, MODE_PRIVATE);
  final int savedScreenId = prefs.getInt(SCREEN_ID_KEY, UNKNOWN_SCREEN_ID);
  
  if (savedScreenId == UNKNOWN_SCREEN_ID || !mPolicy.isAdminActive()) {
  setScreenContent(R.layout.activity_policy_setup);
  
  } else {
  setScreenContent(savedScreenId);
  }
  }
     private void setScreenContent(final int screenId) {
  
  mCurrentScreenId = screenId;
  setContentView(mCurrentScreenId);
  getSharedPreferences(APP_PREF, MODE_PRIVATE).edit().putInt(
  SCREEN_ID_KEY, mCurrentScreenId).commit();
  switch (mCurrentScreenId) {
  case R.layout.activity_policy_setup:
  initPolicySetupScreen();
  initNavigation();
  break;
  case R.layout.activity_view_policy:
  initViewPolicyScreen();
  initNavigation();
  break;
  }
  }
  
  @Override
  protected void onPause() {
  super.onPause();
  if (mCurrentScreenId == R.layout.activity_policy_setup) writePolicy();
  }
  @Override
  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (requestCode == REQ_ACTIVATE_DEVICE_ADMIN && resultCode == RESULT_OK) {
  // User just activated the application as a device administrator.
  setScreenContent(mCurrentScreenId);
  } else {
  super.onActivityResult(requestCode, resultCode, data);
  }
  }
  
  @Override
  public void onBackPressed() {
  if (mCurrentScreenId == R.layout.activity_view_policy) {
  setScreenContent(R.layout.activity_policy_setup);
  return;
  }    
  super.onBackPressed();
  }
  
  private void initPolicySetupScreen() {
  mPasswordQualityInputField = (Spinner) findViewById(R.id.policy_password_quality);
    mPasswordLengthInputField = (EditText)  findViewById(R.id.policy_password_length);
    mPasswordMinUppercaseInputField = (EditText) findViewById(R.id.policy_password_uppercase);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
  R.array.password_types, android.R.layout.simple_spinner_item);
  adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mPasswordQualityInputField.setAdapter(adapter);
  mPasswordQualityInputField.setOnItemSelectedListener(
  new AdapterView.OnItemSelectedListener() {
  public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
    LinearLayout passwordMinUppercaseView =
  (LinearLayout) findViewById(R.id.password_uppercase_view);
  // The minimum number of upper case field is only applicable for password
  // qualities: alpha, alphanumeric, or complex.
  if (pos > 2)
  passwordMinUppercaseView.setVisibility(View.VISIBLE);
  else
  passwordMinUppercaseView.setVisibility(View.GONE);
  }
  public void onNothingSelected(AdapterView<?> parent) {}
  });
  
  mPolicy.readFromLocal();
  mPasswordQualityInputField.setSelection(mPolicy.getPasswordQuality());
  if (mPolicy.getPasswordLength() > 0) {
  mPasswordLengthInputField.setText(String.valueOf(mPolicy.getPasswordLength()));
  } else {
  mPasswordLengthInputField.setText("");
  }
  if (mPolicy.getPasswordMinUpperCase() > 0) {
  mPasswordMinUppercaseInputField.setText(
  String.valueOf(mPolicy.getPasswordMinUpperCase()));
  } else {
  mPasswordMinUppercaseInputField.setText("");
  }
  }
  
  private void initViewPolicyScreen() {
  TextView passwordQualityView = (TextView) findViewById(R.id.policy_password_quality);
   TextView passwordLengthView = (TextView) findViewById(R.id.policy_password_length);
  // Read previously saved policy and populate on the UI.
  mPolicy.readFromLocal();
  int passwordQualitySelection = mPolicy.getPasswordQuality();
  passwordQualityView.setText(
  getResources().getStringArray(R.array.password_types)[passwordQualitySelection]);           
    passwordLengthView.setText(String.valueOf(mPolicy.getPasswordLength()));
  if (passwordQualitySelection > 2) {
  LinearLayout passwordMinUppercaseView =
  (LinearLayout) findViewById(R.id.password_uppercase_view);
  passwordMinUppercaseView.setVisibility(View.VISIBLE);
  ((TextView) findViewById(R.id.policy_password_uppercase)).setText(          
   String.valueOf(mPolicy.getPasswordMinUpperCase()));
  }
  }
  
  private void initNavigation() {
  if (!mPolic
  y.isAdminActive()) {
  // Activates device administrator.
  setupNavigation(R.string.setup_message_activate,
  R.string.setup_action_activate,
  mActivateButtonListener);
  } else if (mCurrentScreenId == R.layout.activity_policy_setup) {
  setupNavigation(R.string.setup_message_set_policy,
  R.string.setup_action_set_policy,
  new View.OnClickListener() {
  public void onClick(View view) {
  writePolicy();
  mPolicy.configurePolicy();
  setScreenContent(R.layout.activity_view_policy);
  }
  });
  }
  else if (!mPolicy.isActivePasswordSufficient()) {
  // Launches password set-up screen in Settings.
  setupNavigation(R.string.setup_message_enforce_policy,
  R.string.setup_action_enforce_policy,
  mEnforcePolicyListener);
  } else {
  // Grants access to secure content.
  setupNavigation(R.string.setup_message_go_secured,
  R.string.setup_action_go_secured,
  new View.OnClickListener() {
  public void onClick(View view) {
  startActivity(new Intent(view.getContext(), SecureActivity.class));         
    }          
   });
  }
  }
  
  private View.OnClickListener mActivateButtonListener = new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  // First, persist the policy. Then, launch intent to trigger the system screen
  // requesting user to confirm the activation of the device administrator.
  writePolicy();
  Intent activateDeviceAdminIntent =
  new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
  activateDeviceAdminIntent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,         
    mPolicy.getPolicyAdmin());
  // It is good practice to include the optional explanation text to explain to
  // user why the application is requesting to be a device administrator.
  The system
  // will display this message on the activation screen.
  activateDeviceAdminIntent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,        
    getResources()
    .getString(R.string.device_admin_activation_message));
  startActivityForResult(activateDeviceAdminIntent, REQ_ACTIVATE_DEVICE_ADMIN);
  }
  };
  
  private View.OnClickListener mEnforcePolicyListener = new View.OnClickListener() {
  @Override
  public void onClick(View v) {
  writePolicy();
  // The device administration API does not "fix" the password if it is
  // determined that the current password does not conform to what is requested
  // by the policy. The caller is responsible for triggering the password set up
  // screen via the below intent.
  Intent intent = new Intent(DevicePolicyManager.ACTION_SET_NEW_PASSWORD);
  startActivity(intent);
  }
  };
  
  private void setupNavigation(int messageResId, int buttonTextResId,
  View.OnClickListener listener) {
  TextView setupMessage = (TextView) findViewById(R.id.setup_message);
  setupMessage.setText(messageResId);
  Button actionBtn = (Button) findViewById(R.id.setup_action_btn);
  actionBtn.setText(buttonTextResId);
  actionBtn.setOnClickListener(listener);
  }
  // 在关闭此页时,将配置信息写入本地SP文件中.
  private void writePolicy() {
  int passwordQuality = (int) mPasswordQualityInputField.getSelectedItemId();
  int passwordLength = 0;
  try {
  passwordLength = Integer.valueOf(mPasswordLengthInputField.getText().toString());
  } catch (NumberFormatException nfe) {} // Defaults to 0.
  int passwordMinUppercase = 0;
  try {
  passwordMinUppercase =
  Integer.valueOf(mPasswordMinUppercaseInputField.getText().toString());
  } catch (NumberFormatException nfe) {} // Defaults to 0.
  mPolicy.saveToLocal(passwordQuality, passwordLength, passwordMinUppercase);
  }
  }

配置操作类:


package com.xiaoma.policymanager.demo;
  import android.app.Activity;
  import android.app.admin.DeviceAdminReceiver;
  import android.app.admin.DevicePolicyManager;
  import android.content.ComponentName;
  import android.content.Context;
  import android.content.Intent;
  import android.content.SharedPreferences;
  import android.os.Build;
   public class Policy {
  public static final int REQUEST_ADD_DEVICE_ADMIN = 1;
  
  private static final String APP_PREF = "APP_PREF";
  
  private static final String KEY_PASSWORD_LENGTH = "PW_LENGTH";
  private static final String KEY_PASSWORD_QUALITY = "PW_QUALITY";
  private static final String KEY_PASSWORD_MIN_UPPERCASE = "PW_MIN_UPPERCASE";
     final static int[] PASSWORD_QUALITY_VALUES = new int[] {
  DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED,
  DevicePolicyManager.PASSWORD_QUALITY_SOMETHING,
  DevicePolicyManager.PASSWORD_QUALITY_NUMERIC,
  DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC,
  DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC,
  DevicePolicyManager.PASSWORD_QUALITY_COMPLEX   };
  private int mPasswordQuality;
  private int mPasswordLength;
  private int mPasswordMinUpperCase;
  private Context mContext;
  private DevicePolicyManager mDPM;
  private ComponentName mPolicyAdmin;
  
  public Policy(Context context) {
  mContext = context;
  mPasswordQuality = -1;
  mPasswordLength = 0;
  mPasswordMinUpperCase = 0;
  mDPM = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);     
    mPolicyAdmin = new ComponentName(context, PolicyAdmin.class);
  }
  
  public void saveToLocal(int passwordQuality, int passwordLength, int passwordMinUppercase) {
   SharedPreferences.Editor editor =
  mContext.getSharedPreferences(APP_PREF, Context.MODE_PRIVATE).edit();
  if (mPasswordQuality != passwordQuality) {
  editor.putInt(KEY_PASSWORD_QUALITY, passwordQuality);
  mPasswordQuality = passwordQuality;     }
  if (mPasswordLength != passwordLength) {
  editor.putInt(KEY_PASSWORD_LENGTH, passwordLength);
  mPasswordLength = passwordLength;
  }
  if (mPasswordMinUpperCase != passwordMinUppercase) {
  editor.putInt(KEY_PASSWORD_MIN_UPPERCASE, passwordMinUppercase);       
   mPasswordMinUpperCase = passwordMinUppercase;
  }     editor.commit();
  }
  
  public void readFromLocal() {
  SharedPreferences prefs = mContext.getSharedPreferences(APP_PREF, Context.MODE_PRIVATE);     
    mPasswordQuality = prefs.getInt(KEY_PASSWORD_QUALITY, -1);
  mPasswordLength = prefs.getInt(KEY_PASSWORD_LENGTH, -1);
  mPasswordMinUpperCase = prefs.getInt(KEY_PASSWORD_MIN_UPPERCASE, -1);
  }
  
  public int getPasswordQuality() { return mPasswordQuality; }
  
  public int getPasswordLength() { return mPasswordLength; }
  
  public int getPasswordMinUpperCase() { return mPasswordMinUpperCase; }
  
  public ComponentName getPolicyAdmin() { return mPolicyAdmin; }
  
  public boolean isAdminActive() {
  return mDPM.isAdminActive(mPolicyAdmin);
  }
  public boolean isActivePasswordSufficient() {
  return mDPM.isActivePasswordSufficient();
  }
  
  public boolean isDeviceSecured() {
  return isAdminActive() && isActiveP
  asswordSufficient();   }
  
  public void configurePolicy() {
  mDPM.setPasswordQuality(mPolicyAdmin, PASSWORD_QUALITY_VALUES[mPasswordQuality]);
  mDPM.setPasswordMinimumLength(mPolicyAdmin, mPasswordLength);
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
  mDPM.setPasswordMinimumUpperCase(mPolicyAdmin, mPasswordMinUpperCase);
  }
  }
  
  public static class PolicyAdmin extends DeviceAdminReceiver {
  @Override
  public void onDisabled(Context context, Intent intent) {
  // Called when the app is about to be deactivated as a device administrator.
  super.onDisabled(context, intent);
  SharedPreferences prefs = context.getSharedPreferences(APP_PREF, Activity.MODE_PRIVATE);
  
  prefs.edit().clear().commit();
  }
  }
  }

权限验证类:


package com.xiaoma.policymanager.demo;
import android.app.Activity;
import android.content.Intent;

public class SecureActivity extends Activity {
@Override
protected void onResume() {
super.onResume();
// Check to see if the device is properly secured as per the policy. Send user
// back to policy set up screen if necessary.
Policy policy = new Policy(this);
policy.readFromLocal();
if (!policy.isDeviceSecured()) {
Intent intent = new Intent();
intent.setClass(this, PolicySetupActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
setContentView(R.layout.activity_secure);
}
}

希望本文所述对你有所帮助,Android实现屏幕锁定源码详解内容就给大家介绍到这里了。希望大家继续关注我们的网站!想要学习Android可以继续关注本站。

您可能感兴趣的文章:Android屏幕锁屏弹窗的正确姿势DEMO详解Android唤醒、解锁屏幕代码实例Android编程实现一键锁屏的方法android禁止锁屏保持常亮(示例代码)Android如何实现锁屏状态下弹窗Android系统永不锁屏永不休眠的方法Android编程实现的一键锁屏程序详解Android编程之自定义锁屏实例分析轻松实现Android锁屏功能Android开发实现消除屏幕锁的方法


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android实现屏幕锁定源码详解

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android实现屏幕锁定源码详解

最近有朋友问屏幕锁定的问题,自己也在学习,网上找了下也没太详细的例子,看的资料书上也没有有关屏幕锁定程序的介绍,下个小决心,自己照着官方文档学习下,现在做好了,废话不多说,先发下截图,看下效果,需要注意的地方会加注释,有问题的朋友可以直接留
2022-06-06

Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码

1、Android屏幕常亮/点亮 代码如下: //保持屏幕常亮 PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE); mWakeLock = p
2022-06-06

Android唤醒、解锁屏幕代码实例

解锁、唤醒屏幕用到KeyguardManager,KeyguardLock,PowerManager,PowerManager.WakeLock 所需权限:代码如下: 2022-06-06

android屏幕全屏的实现代码

去掉标题栏:requestWindowFeature(Window.FEATURE_NO_TITLE);API上是这么说的:int FEATURE_NO_TITLE Flag for the "no title" featu
2022-06-06

Android屏幕锁屏弹窗的正确姿势DEMO详解

在上篇文章给大家介绍了Android程序开发仿新版QQ锁屏下弹窗功能。今天通过本文给大家分享android锁屏弹窗的正确姿势。 最近在做一个关于屏幕锁屏悬浮窗的功能,于是在网上搜索了很多安卓屏幕锁屏的相关资料,鉴于网上的资料比较零碎,所以我
2022-06-06

Android手机屏幕敲击解锁功能代码

1.前言现在市面上有不少Android手机支持敲击屏幕解锁,敲击屏幕解锁是一项很实用的功能,但一来只支持敲击屏幕,二来只能用于解锁或锁屏,再者我们应用层的开发者切不进去,完全无法玩起来。开发者,开发者,我们既然身为开发者何不搞点大新闻,那么
2022-06-06

Android项目中如何实现判断屏幕是否亮屏与解锁

本篇文章给大家分享的是有关Android项目中如何实现判断屏幕是否亮屏与解锁,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.屏幕是否亮屏:PowerManager powe
2023-05-31

Android调节屏幕亮度实现代码

调节屏幕亮度时,先设置当前activity亮度,再并保存为系统亮度即可。 1 onCreate()里检查系统亮度并设置seekBar:private void screenBrightness_check(){//先关闭系统的亮度自动调节t
2022-06-06

Android实现固定屏幕显示的方法

本文实例讲述了Android实现固定屏幕显示的方法。分享给大家供大家参考。具体如下: 在Android开发中我们会碰到开发屏幕扭转的情况,如何固定住屏幕ScreenOrientation 呢? 在学习jetboy代码时,发现屏幕被旋转了,代
2022-06-06

Android屏幕及view的截图实例详解

Android屏幕及view的截图实例详解屏幕可见区域的截图 整个屏幕截图的话可以用View view = getWindow().getDecorView();public static Bitmap getNormalViewScree
2023-05-31

Android编程实现的一键锁屏程序详解

本文实例讲述了Android编程实现的一键锁屏程序。分享给大家供大家参考,具体如下: 据笔者了解,所有的Android手机都用电源键来手动锁屏。笔者使用手机时,一天之内手动锁屏的次数绝对不少于30次。如果都用电源键来进行的话,那么电源键的使
2022-06-06

Python实现屏幕截图的代码及函数详解

废话不多说,先给大家看下python实现屏幕截图的代码,具体代码如下所述:from selenium import webdriver import time def capture(url, save_fn="capture.png"):
2022-06-04

Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法

本文实例讲述了Android编程实现横竖屏切换时不销毁当前activity和锁定屏幕的方法。分享给大家供大家参考,具体如下: 首先在Mainifest.xml的Activity元素中加入android:configChanges="orie
2022-06-06

Android 自定义开源库 EasyView实现详解

这篇文章主要为大家介绍了Android自定义开源库EasyView实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-05-17

Android 仿小米锁屏实现九宫格解锁功能(无需图片资源)

最近公司要求做个九宫格解锁,本人用的是小米手机,看着他那个设置锁屏九宫格很好看,就做了该组件,不使用图片资源,纯代码实现。 尊重每个辛苦的博主,在http://blog.csdn.net/mu399/article/details/387
2022-06-06

Android中获得手机屏幕大小实现代码

Android在自定义控件时,经常需要获得屏幕的宽高,每次都要写,不妨直接把他封装成工具类,直接拿来用,废话不说,直接上代码 package com.example.customview; import android.con
2022-06-06

android屏幕圆角实现方法的示例代码

现在很多全面屏手机的屏幕四角做成圆的,其圆润的感觉给人带来别样的视觉体验。先来一张我大锤子镇楼(不是广告呀,锤子没给钱),大家来直观感受一下圆角的魅力。锤子.jpg当然这种是硬件上实现的,我怀疑也是方的显示屏,然后做了个圆角遮蔽。那对于我们
2023-05-30

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录