当前位置:首页 » 安卓系统 » takeandroid

takeandroid

发布时间: 2023-05-22 15:34:36

1. android 怎么实现左侧导航栏

Android左侧推出导航菜单可以让Activity继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现。具体的做法是下列代码:
第一步:设计弹出窗口xml:

Xml代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
>

<LinearLayout
android:id="@+id/pop_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:background="@drawable/btn_style_alert_dialog_background"
>

<Button
android:id="@+id/btn_take_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="20dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="拍照"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_pick_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="从相册选择"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_cancel"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="15dip"
android:layout_marginBottom="15dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="取消"
android:background="@drawable/btn_style_alert_dialog_cancel"
android:textColor="#ffffff"
android:textStyle="bold"

/>
</LinearLayout>
</RelativeLayout>
第二步:创建SelectPicPopupWindow类继承PopupWindow:

java代码
import android.app.Activity;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.PopupWindow;

public class SelectPicPopupWindow extends PopupWindow {

private Button btn_take_photo, btn_pick_photo, btn_cancel;
private View mMenuView;

public SelectPicPopupWindow(Activity context,OnClickListener itemsOnClick) {
super(context);
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMenuView = inflater.inflate(R.layout.alert_dialog, null);
btn_take_photo = (Button) mMenuView.findViewById(R.id.btn_take_photo);
btn_pick_photo = (Button) mMenuView.findViewById(R.id.btn_pick_photo);
btn_cancel = (Button) mMenuView.findViewById(R.id.btn_cancel);
//取消按钮
btn_cancel.setOnClickListener(new OnClickListener() {

public void onClick(View v) {
//销毁弹出框
dismiss();
}
});
//设置按钮监听
btn_pick_photo.setOnClickListener(itemsOnClick);
btn_take_photo.setOnClickListener(itemsOnClick);
//设置SelectPicPopupWindow的View
this.setContentView(mMenuView);
//设置SelectPicPopupWindow弹出窗体的宽
this.setWidth(LayoutParams.FILL_PARENT);
//设置SelectPicPopupWindow弹出窗体的高
this.setHeight(LayoutParams.WRAP_CONTENT);
//设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
//设置SelectPicPopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.AnimBottom);
//实例化一个ColorDrawable颜色为半透明
ColorDrawable dw = new ColorDrawable(0xb0000000);
//设置SelectPicPopupWindow弹出窗体的背景
this.setBackgroundDrawable(dw);
//mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
mMenuView.setOnTouchListener(new OnTouchListener() {

public boolean onTouch(View v, MotionEvent event) {

int height = mMenuView.findViewById(R.id.pop_layout).getTop();
int y=(int) event.getY();
if(event.getAction()==MotionEvent.ACTION_UP){
if(y<height){
dismiss();
}
}
return true;
}
});

}

}

第三步:编写MainActivity类实现测试:

Java代码
import android.app.Activity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.TextView;

public class MainActivity extends Activity {

//自定义的弹出框类
SelectPicPopupWindow menuWindow;

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView) this.findViewById(R.id.text);
//把文字控件添加监听,点击弹出自定义窗口
tv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//实例化SelectPicPopupWindow
menuWindow = new SelectPicPopupWindow(MainActivity.this, itemsOnClick);
//显示窗口
menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main), Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL, 0, 0); //设置layout在PopupWindow中显示的位置
}
});
}

//为弹出窗口实现监听类
private OnClickListener itemsOnClick = new OnClickListener(){

public void onClick(View v) {
menuWindow.dismiss();
switch (v.getId()) {
case R.id.btn_take_photo:
break;
case R.id.btn_pick_photo:
break;
default:
break;
}

}

};

}
上述的代码实现了从底部弹出,也可以根据PopupWindow类设置从左下部弹出。
Android的对话框有两种:PopupWindow和AlertDialog。它们的不同点在于:
AlertDialog的位置固定,而PopupWindow的位置可以随意
AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的
PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件。具体如下
showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移
showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移
showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

2. android 怎么调用系统相机

Intent openCameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(openCameraIntent, TAKE_PICTURE);
另外在AndroidManifest.xml中开启拍照的权限<uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" />

3. android os进程长时间处于“保持唤醒状态”,什么原因

我也在找这个问题解决办法,但是很遗憾 还没有!下边有一篇文章写的比较清楚:只有飞行模式有办法解决!而且还有个问题:今天半天时间看了下流量,这个进程居然一下耗费了13M多的流量,真的不知道是什么情况!!
------------------------------以下转自网络--------------------------------
Android OS 进程耗电多的问题是否有解决办法?
简单的说就是Android手机(根据查阅,各种型号Android手机均有可能出现此情况)变得异常费电,查看电量信息,android os进程耗电最大,待机时占用到60%+的电量。

网友总结有以下特点:
1.关掉背景同步和各种谷歌服务,无效
2.用钛同步冻结各种有可能在待机时工作的服务和软件(包括各种谷歌服务),无效
3.能挪到SD卡的程序统统挪到SD卡,无效
4.关掉WLAN,GPS,数据传输,数据漫游,无效
5.打开USB调试,无效
6.充满电以后重启一次,无效
7.用CPU大师设置屏幕关闭时自动降频至384MHZ或者192MHZ,无效
8.用PLUS工具箱提高超频电压,因为不能设置1.2GHZ以上的值,尝试设置成56-800一类的若干组高电压数值,无效
9.飞行模式,有效
10.考虑到9有效,综合考虑4,因此在4的基础上,手动指定运营商为联通,并设置为2G网络,无效
11.用PLUS工具箱切换了O2,港版,新欧版等几种基带配置,无效
12.刷ROM,无效
13.用autostart关掉各种自启动关联,无效

网友分析得出的原因:
“不
正常耗电是因为android os在待机时不断唤醒设备造成的。至于具体是什么子进程在不断让android os工作,可以通过wake
lock的使用情况来确定。所以安装模拟终端,用take
wakelock的方式得到/proc/wakelock文件,然后进行查看,结果数次查看的结果都是mmc_delayed_work进程非常频繁的使
用wake lock。(1小时5000次以上)然后重启在充电和飞行模式下做同样的测试,结果mmc_delayed_work进程使用wake
lock的次数几乎可以忽略(只有几次),据此基本可以确定,是mmc_delayed_work在不插电的情况下工作不正常,不断请求CPU资源,导致了android os一直唤醒待机时的设备,造成异常耗电。此问题基本上和谷歌服务什么的没任何关系。”
那么,这种情况应该如何解决呢?这样的好点基本导致手机无法正常使用了,但纯待机都到不了12小时,希望有高人给用户些建议

4. android 怎么实现左侧推出导航菜单

Android左侧推出导航菜单可以让Activity继承PopupWindow类来实现的弹出窗体,布局可以根据自己定义设计。弹出效果主要使用了translate和alpha样式实现。具体的做法是下列代码:

第一步:设计弹出窗口xml:

Xml代码
<?xmlversion="1.0"encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
>

<LinearLayout
android:id="@+id/pop_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:layout_alignParentBottom="true"
android:background="@drawable/btn_style_alert_dialog_background"
>


<Button
android:id="@+id/btn_take_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="20dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="拍照"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_pick_photo"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="5dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="从相册选择"
android:background="@drawable/btn_style_alert_dialog_button"
android:textStyle="bold"
/>

<Button
android:id="@+id/btn_cancel"
android:layout_marginLeft="20dip"
android:layout_marginRight="20dip"
android:layout_marginTop="15dip"
android:layout_marginBottom="15dip"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="取消"
android:background="@drawable/btn_style_alert_dialog_cancel"
android:textColor="#ffffff"
android:textStyle="bold"

/>
</LinearLayout>
</RelativeLayout>
第二步:创建SelectPicPopupWindow类继承PopupWindow:

Java代码
importandroid.app.Activity;
importandroid.content.Context;
importandroid.graphics.drawable.ColorDrawable;
importandroid.view.LayoutInflater;
importandroid.view.MotionEvent;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.view.View.OnTouchListener;
importandroid.view.ViewGroup.LayoutParams;
importandroid.widget.Button;
importandroid.widget.PopupWindow;

{


privateButtonbtn_take_photo,btn_pick_photo,btn_cancel;
privateViewmMenuView;

publicSelectPicPopupWindow(Activitycontext,OnClickListeneritemsOnClick){
super(context);
LayoutInflaterinflater=(LayoutInflater)context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mMenuView=inflater.inflate(R.layout.alert_dialog,null);
btn_take_photo=(Button)mMenuView.findViewById(R.id.btn_take_photo);
btn_pick_photo=(Button)mMenuView.findViewById(R.id.btn_pick_photo);
btn_cancel=(Button)mMenuView.findViewById(R.id.btn_cancel);
//取消按钮
btn_cancel.setOnClickListener(newOnClickListener(){

publicvoidonClick(Viewv){
//销毁弹出框
dismiss();
}
});
//设置按钮监听
btn_pick_photo.setOnClickListener(itemsOnClick);
btn_take_photo.setOnClickListener(itemsOnClick);
//设置SelectPicPopupWindow的View
this.setContentView(mMenuView);
//设置SelectPicPopupWindow弹出窗体的宽
this.setWidth(LayoutParams.FILL_PARENT);
//设置SelectPicPopupWindow弹出窗体的高
this.setHeight(LayoutParams.WRAP_CONTENT);
//设置SelectPicPopupWindow弹出窗体可点击
this.setFocusable(true);
//设置SelectPicPopupWindow弹出窗体动画效果
this.setAnimationStyle(R.style.AnimBottom);
//实例化一个ColorDrawable颜色为半透明
ColorDrawabledw=newColorDrawable(0xb0000000);
//设置SelectPicPopupWindow弹出窗体的背景
this.setBackgroundDrawable(dw);
//mMenuView添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
mMenuView.setOnTouchListener(newOnTouchListener(){

publicbooleanonTouch(Viewv,MotionEventevent){

intheight=mMenuView.findViewById(R.id.pop_layout).getTop();
inty=(int)event.getY();
if(event.getAction()==MotionEvent.ACTION_UP){
if(y<height){
dismiss();
}
}
returntrue;
}
});

}

}

第三步:编写MainActivity类实现测试:

Java代码
importandroid.app.Activity;
importandroid.os.Bundle;
importandroid.view.Gravity;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.TextView;

{

//自定义的弹出框类
;

@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextViewtv=(TextView)this.findViewById(R.id.text);
//把文字控件添加监听,点击弹出自定义窗口
tv.setOnClickListener(newOnClickListener(){
publicvoidonClick(Viewv){
//实例化SelectPicPopupWindow
menuWindow=newSelectPicPopupWindow(MainActivity.this,itemsOnClick);
//显示窗口
menuWindow.showAtLocation(MainActivity.this.findViewById(R.id.main),Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL,0,0);//设置layout在PopupWindow中显示的位置
}
});
}

//为弹出窗口实现监听类
=newOnClickListener(){

publicvoidonClick(Viewv){
menuWindow.dismiss();
switch(v.getId()){
caseR.id.btn_take_photo:
break;
caseR.id.btn_pick_photo:
break;
default:
break;
}


}

};

}

上述的代码实现了从底部弹出,也可以根据PopupWindow类设置从左下部弹出。

Android的对话框有两种:PopupWindow和AlertDialog。它们的不同点在于:

AlertDialog的位置固定,而PopupWindow的位置可以随意

AlertDialog是非阻塞线程的,而PopupWindow是阻塞线程的

PopupWindow的位置按照有无偏移分,可以分为偏移和无偏移两种;按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件。具体如下

showAsDropDown(View anchor):相对某个控件的位置(正左下方),无偏移

showAsDropDown(View anchor, int xoff, int yoff):相对某个控件的位置,有偏移

showAtLocation(View parent, int gravity, int x, int y):相对于父控件的位置(例如正中央Gravity.CENTER,下方Gravity.BOTTOM等),可以设置偏移或无偏移

5. 安卓手机截长图软件

1. 手机截长图软件
手机截长图软件 求一个可以把两张手机截图 拼接成一张的软件 还可以自由拼接
在 iOS 11 里有一个新的功能,那就是在截图结束后,可以进一步的编辑你的截图,标注打码都可以。如果你是在拼一张长图,你是否会有一样的需求呢。在推荐了 Tailor 、Piiic 等一系列优秀的长图 App 后,我们又发现了一款新的长图 App 可以满足你的各种需求,它就是 Picsew 。

更全的处理方式

在 Picsew 里提供了三种长图模式:“长截图”、“横向拼接”、“竖向拼接”。

在 LongScreen 和 Tailor 里都只能选择截图来拼接长图,Piiic 和 Picsew 均提供了自由拼接方案,你可以选择任意照片或者截图进行两种方向的拼接,并且没有数量限制。而且 Picsew 在进行大量截图拼接时,处理速度相当快,可能在图片处理算法上要优于其他 App 。

更全的编辑功能

当 Picsew 自动为你拼接完长图后,可以进一步进行自由拼接的操作,继续完善拼接不完美的地方,也可以再次进行横竖两向的剪裁。

在近期的 2.0 版本之后的更新中,开发者进一步拓展了你的处理领域。

在拼接完成后,你可以为部分内容进行马赛克处理,也可以在图片的底部三个位置加上版权水印,也可以为图片租滑添加描边线条,而这些二次编辑功能也是这个 App 的优势所在。

但是 Picsew 也有不足的地方,在自动拼接方面,它并不能和 Tailor 一样自动对截图进行排序,Picsew 要求你必须要按照先后顺序选择截图,否则有很大几率出现错位的结果。Picsew 整体功能和界面体验还是要优于其余几款同类 App 的,界面简洁,没有任何自带水印或者广告,附加的实用功能十分齐全,在 App Store 的口碑也是相当的好。

这么一款优秀的长图 App 仅售一元,你可以在 App Store 里下载体验。
怎么样在手机上截取长图
手机截屏是指将手机当前的页面全屏截取下来并保存为图片的功能,截屏的方法有以下几种:方法一:同时按住屏幕底部的Home键和电源键,保持大约2~3秒,看到屏幕边框闪动松手即截屏成功。

方法二:待机-应用程序-设定--动作与手势-手掌动作-【手掌动作】滑块开启-【截取屏幕】滑块开启已开启。(S5手机该选项为【手掌滑动以捕捉】-开启)-直接用手的侧面从右至左(从左至右)划过屏幕即可截图。

方法三:待机-应用程序-设定--辅助功能-(敏捷度和互动)-助理菜单-【助理菜单】滑块开启-白色方框选择【截屏】即可。 若使用的是Note系列手机,还可以通过手写笔进行截图。

操作:取出手写笔-按住手写笔上的按键并点住屏幕即可截屏,截屏后点击右上角对号保存即可。若方法正确仍无法截屏,可以备份重要数据(联系人、照片、备忘录等)恢复出厂设置尝试。
求一款安卓手机截图app,要求可以截取聊天记录(长图)
轻松截屏(Screenshot ER)是一款实用的截屏工具,具有倒计时、晃动、搜索键长按、通知栏触发按钮、主屏幕快捷方式等多种截图方式,并支持全屏、半屏、缩略多种预览方式。

1、使用“Take screenshot”功能,即可开启倒计时截图,而如果截桌面功能图片时,可以使用软件提供的“主屏幕快捷键”截图,那样更加简单快捷;

2、在截取某个软件程序图片时,可以通过软件提供的“搜索功能袭手快捷键”截图,或使用“通知栏”快速功能截图;

3、当我们使用“主屏幕快捷、搜索功能键、通知栏”截图时,会发现在屏幕右上角出现倒计时数字显示,软件通过数字显示来提醒用户还有几秒钟截图,想要修改倒计时时间,可以通过软件“Delays”功能,修改时间数值;

4、而如果想要修改图片保存路径等,可以通过软件提供的“Settings”功能,来修改图片保存路径、截图格式、浏览模式等设置操作。

Screenshot ER截图软件在给我们带来方便快捷截图的同时,还提供了更加人性化设置,如“截图时间、浏览模式、截图格式、截图翻转方向”等,大大提升了我们使用软件截图的兴趣。
手机怎么截长图?
1.首先进入一个下部有内容的界面,没有内容是不能进行长图截取的。

2.将下方的箭头往下拖动,等待出现网格框。

3.长出现网格框后,会自动显示下部的图片拍型嫌,拖到合适的位置。

4.按下“音量-和电源键”,进入长图截取模式。

5.如果想要进行图片编辑的话,就选择“编辑截图”

6.进入截图编辑界面,可以给图片加文字、马赛克等操作。

7.编辑图片完成后,点击“保存”即可保存该长图。

8.长图保存后,即可在相册中查看到截取的长图文件。

6. 如何实现对Android客户端App进行界面截图

轻松截屏(Screenshot ER)是一款实用的截屏工具,具有倒计时、晃动、搜索键长按、通知栏触发按钮、主屏幕快捷方式等多种截图方式,并支持全屏、半屏返缓、缩略多种预览方式。 手机截屏(ShootMe)是一款使用方便的手机截屏软件,拥有摇动、声控、连续、光感等多种截图模式,无需硬按键的支持。 截图大师是一款强大的截图工具,支持摇动、计时截图、通知栏图标触发、长按搜索键触发等截图方式,支持JPEG和PNG图像格式,自定义截图文件名前缀和文件夹名称。 一、界面设置 手机屏幕是用户经常接触的界面,其界面和图标布局直接影响用户量,因而,界面是否美观、图标布局是否合理都是考评的方面。 1、轻松截屏界面设计较为美观,设有开始设备、截图、方式、延迟、设置等功能,并可以设置全屏、显示倒数记秒等。 轻松截屏主界面和显示设置 2、屏幕截图主界面较为简单,主要为功能介绍提示。在图像截图设置中,可以设置图片大小、格式、质量等。 屏幕截图主界面和菜单 3、截图大师开始界面则直接进入截图状态,在截图设置中,具有常规设置、声音设置和文件名设置等。 截图大师主界面和设置 二、截图模式 对于屏幕截图软件来说,截图的方式和便利性无疑是考评的一个方面,下面,我们一起看看这三款软件的截图模式。 1、轻松截图具有倒计时、晃动、搜索键长按、通知栏触发按钮、主屏幕快捷方式等五种截图模式。 截图方法和启动设备 点击“Take screenshot”功能,即可开启倒计时截图;在主屏幕创建快捷方式,方便截图桌面功能图片。在晃动截图、通知栏触发截图时,需要先开启设备。 2、屏幕截图支持摇晃、语音、视频模式漏兆模截图,在设置中可以选择摇晃模式、语音模式等。在视频设置中可以设置视频大小、视频编码、视频帧数等。 截图模式和设置摇晃和语音模式 3、截图大师支持摇晃、定时、通知三种触发截图模式。其中,通知触发时,需要先选择通知触发模式,然后在通知栏内点击截图大师触发器即可开始截图。 截图模式和通知栏触发器 三、截图效果和特色功能 对于这三款截图软件来说,截图的效果、查看方式等也是这类软件主要的考评之一。 1、轻松截图在截取图片后,会在左上角显示截图后的缩略图,方便用户预览,并提供了忽略、查看、重拍、分享、保存等功能操作选项。 缩略图功能菜单和截图查看 采用轻松截图截取的图片效果还不错,只是显示颜色有些失真,不像利用在电脑上截图那么清晰。 2、屏幕截图功能相对简单,可以设置自动隐藏、显示截图通知等。对于截取图片可以选择图片质量,但未提供截图的查看方式。 截图设置和截图效果 3、截图大师支持自定义文件名前缀、文件夹名称,方便用户从SD卡中查看图片,图片的相对效果还不错。 文件夹名称和截图效果 五、资源占用 对于手机软件来猜氏说,因为手机本身的内存和CPU资源都很有限,资源占用情况自然是考评的一个重要参考。下面我们一起来看看这三款屏幕截图软件的资源占用情况。 评测标准:本次主要考评快捷应用启动后运行的资源占用。 各软件资源占用软件资源占用 从中可以看出,三款截图应用软件中,以手机截屏在资源占用方面都较多,而截图大师在资源占用较少,轻松截屏相对较适中。 总结: 通过横评比较,我们发现,这三款安卓手机截图软件的表现都非常的不错。在截图功能以及截图效果上的表现都很出色。当然,三款安卓手机截图软件各有个的特色,比如:截图大师支持自定义文件名前缀名称;轻松截图具有图片查看、分享、重拍等功能;手机截图支持语音截屏等。但不管如何,都不可否认这三款安卓手机截图软件的优秀。正是因为有了它们才使得安卓手机用户不用依赖电脑软件来截图了。

7. Android线程池ThreadPoolExecutor详解

       传统的多线程是通过继承Thread类及实现Runnable接口来实现的,每次创建及销毁线程都会消耗资源、响应速度慢,且线程缺乏统一管理,容易出现阻塞的情况,针对以上缺点,线程池就出现了。

       线程池是一个创建使用线程并能保存使用过的线程以达到复用的对象,简单的说就是一块缓存了一定数量线程的区域。

       1.复用线程:线程执行完不会立刻退出,继续执行其他线程;
       2.管理线程:统一分配、管理、控制最大并发数;

       1.降低因频繁创建&销毁线程带来的性能开销,复用缓存在线程池中的线程;
       2.提高线程执行效率&响应速度,复用线程:响应速度;管理线程:优化线程执行顺序,避免大量线程抢占资源导致阻塞现象;
       3.提高对线程的管理度;

       线程池的使用也比较简单,流程如下:

       接下来通过源码来介绍一下ThreadPoolExecutor内部实现及工作原理。

       线程池的最终实现类是ThreadPoolExecutor,通过实现可以一步一步的看到,父接口为Executor:

       其他的继承及实现关系就不一一列举了,直接通过以下图来看一下:

       从构造方法开始看:

       通过以上可以看到,在创建ThreadPoolExecutor时,对传入的参数是有要求的:corePoolSize不能小于0;maximumPoolSize需要大于0,且需要大于等于corePoolSize;keepAliveTime大于0;workQueue、threadFactory都不能为null。
       在创建完后就需要执行Runnable了,看以下execute()方法:

       在execute()内部主要执行的逻辑如下:
       分析点1:如果当前线程数未超过核心线程数,则将runnable作为参数执行addWorker(),true表示核心线程,false表示非核心线程;
       分析点2:核心线程满了,如果线程池处于运行状态则往workQueue队列中添加任务,接下来判断是否需要拒绝或者执行addWorker();
       分析点3:以上都不满足时 [corePoolSize=0且没有运行的线程,或workQueue已经满了] ,执行addWorker()添加runnable,失败则执行拒绝策略;
        总结一下:线程池对线程创建的管理,流程图如下:

       在执行addWorker时,主要做了以下两件事:
       分析点1:将runnable作为参数创建Worker对象w,然后获取w内部的变量thread;
       分析点2:调用start()来启动thread;
       在addWorker()内部会将runnable作为参数传给Worker,然后从Worker内部读取变量thread,看一下Worker类的实现:

       Worker实现了Runnable接口,在Worker内部,进行了赋值及创建操作,先将execute()时传入的runnable赋值给内部变量firstTask,然后通过ThreadFactory.newThread(this)创建Thread,上面讲到在addWorker内部执行t.start()后,会执行到Worker内部的run()方法,接着会执行runWorker(this),一起看一下:

       前面可以看到,runWorker是执行在子线程内部,主要执行了三件事:
       分析1:获取当前线程,当执行shutdown()时需要将线程interrupt(),接下来从Worker内部取到firstTask,即execute传入的runnable,接下来会执行;
       分析2:while循环,task不空直接执行;否则执行getTask()去获取,不为空直接执行;
       分析3:对有效的task执行run(),由于是在子线程中执行,因此直接run()即可,不需要start();
       前面看到,在while内部有执行getTask(),一起看一下:

       getTask()是从workQueue内部获取接下来需要执行的runnable,内部主要做了两件事:
       分析1:先获取到当前正在执行工作的线程数量wc,通过判断allowCoreThreadTimeOut[在创建ThreadPoolExecutor时可以进行设置]及wc > corePoolSize来确定timed值;
       分析2:通过timed值来决定执行poll()或者take(),如果WorkQueue中有未执行的线程时,两者作用是相同的,立刻返回线程;如果WorkQueue中没有线程时,poll()有超时返回,take()会一直阻塞;如果allowCoreThreadTimeOut为true,则核心线程在超时时间没有使用的话,是需要退出的;wc > corePoolSize时,非核心线程在超时时间没有使用的话,是需要退出的;
       allowCoreThreadTimeOut是可以通过以下方式进行设置的:

       如果没有进行设置,那么corePoolSize数量的核心线程会一直存在。
        总结一下:ThreadPoolExecutor内部的核心线程如何确保一直存在,不退出?
       上面分析已经回答了这个问题,每个线程在执行时会执行runWorker(),而在runWorker()内部有while()循环会判断getTask(),在getTask()内部会对当前执行的线程数量及allowCoreThreadTimeOut进行实时判断,如果工作数量大于corePoolSize且workQueue中没有未执行的线程时,会执行poll()超时退出;如果工作数量不大于corePoolSize且workQueue中没有未执行的线程时,会执行take()进行阻塞,确保有corePoolSize数量的线程阻塞在runWorker()内部的while()循环不退出。
       如果需要关闭线程池,需要如何操作呢,看一下shutdown()方法:

       以上可以看到,关闭线程池的原理:a. 遍历线程池中的所有工作线程;b. 逐个调用线程的interrupt()中断线程(注:无法响应中断的任务可能永远无法终止)
       也可调用shutdownNow()来关闭线程池,二者区别:
       shutdown():设置线程池的状态为SHUTDOWN,然后中断所有没有正在执行任务的线程;
       shutdownNow():设置线程池的状态为STOP,然后尝试停止所有的正在执行或暂停任务的线程,并返回等待执行任务的列表;
       使用建议:一般调用shutdown()关闭线程池;若任务不一定要执行完,则调用shutdownNow();
        总结一下:ThreadPoolExecutor在执行execute()及shutdown()时的调用关系,流程图如下:

       线程池可以通过Executors来进行不同类型的创建,具体分为四种不同的类型,如下:

       可缓存线程池:不固定线程数量,且支持最大为Integer.MAX_VALUE的线程数量:

       1、线程数无限制
       2、有空闲线程则复用空闲线程,若无空闲线程则新建线程
       3、一定程度上减少频繁创建/销毁线程,减少系统开销

       固定线程数量的线程池:定长线程池

       1、可控制线程最大并发数(同时执行的线程数)
       2、超出的线程会在队列中等待。

       单线程化的线程池:可以理解为线程数量为1的FixedThreadPool

       1、有且仅有一个工作线程执行任务
       2、所有任务按照指定顺序执行,即遵循队列的入队出队规则

       定时以指定周期循环执行任务

       一般来说,等待队列 BlockingQueue 有: ArrayBlockingQueue 、 LinkedBlockingQueue 与 SynchronousQueue 。
       假设向线程池提交任务时,核心线程都被占用的情况下:
        ArrayBlockingQueue :基于数组的阻塞队列,初始化需要指定固定大小。
       当使用此队列时,向线程池提交任务,会首先加入到等待队列中,当等待队列满了之后,再次提交任务,尝试加入队列就会失败,这时就会检查如果当前线程池中的线程数未达到最大线程,则会新建线程执行新提交的任务。所以最终可能出现后提交的任务先执行,而先提交的任务一直在等待。
        LinkedBlockingQueue :基于链表实现的阻塞队列,初始化可以指定大小,也可以不指定。
       当指定大小后,行为就和 ArrayBlockingQueue一致。而如果未指定大小,则会使用默认的 Integer.MAX_VALUE 作为队列大小。这时候就会出现线程池的最大线程数参数无用,因为无论如何,向线程池提交任务加入等待队列都会成功。最终意味着所有任务都是在核心线程执行。如果核心线程一直被占,那就一直等待。
        SynchronousQueue :无容量的队列。
       使用此队列意味着希望获得最大并发量。因为无论如何,向线程池提交任务,往队列提交任务都会失败。而失败后如果没有空闲的非核心线程,就会检查如果当前线程池中的线程数未达到最大线程,则会新建线程执行新提交的任务。完全没有任何等待,唯一制约它的就是最大线程数的个数。因此一般配合Integer.MAX_VALUE就实现了真正的无等待。
       但是需要注意的是, 进程的内存是存在限制的,而每一个线程都需要分配一定的内存。所以线程并不能无限个。

8. android5.0新特性/新功能有哪些

--“Material Design”材料设计

Android 5.0 Lollipop最大的变化在于UI用户界面的设计,新的Android 5.0 Lollipop将会采用全新的“Material
Design”设计规范,新的用户界面更加简洁、色彩更加丰富。动画效果更加合理生动,同时加入实时阴影的3D视图,更多的使用卡片风格的显示效果。全平台风格也变得更为统一。蚂肢

--新的通知中心

Android 5.0
Lollipop通知中心融入更多的卡片式风格,即使是在锁屏状态下也可以进行多种功能操作。同时用户可以自定义通知的优先级别,使得用户不会错过任何重要的通知。还可以设置特定的通知权限,只有被允许的通知消息才会推送。同时还具有操作性,比如用户在游戏时有电话打入,不会以全屏显示,而是弹出可操作的通知卡片,用户可选择接听或拒接,不影响游戏继续进行。

--更好的电池续航

Android 5.0
Lollipop更好的优化了系统的续航,系统能够根据电池电量来减少处理器功耗、屏幕亮度等等,能为为用户带来额外90分钟的续航时间。

--更安全

新设备将会自动启动加密功能,以防止丢失或被盗设备上的数据被盗。同时SELinux将会强制对所有的应用进行安全漏洞和恶意软件的扫描。用户还可以用Android
Wear设备对你的手机和平板电脑进行配对,使用Android Wear解锁你的手机平板更加安全方便。

--设备共享

假设你忘记带手机,你让可以在另一个运行Android 5.0 Lollipop的设备上访问你的个人信息。Android 5.0
Lollipop还来带全新的访客模式,用户可以设置锁定设备中的特定信息,不让他人访问查看。

--更强的性能和流畅的系统体验

Android 5.0
Lollipop可以提供高达4倍的性能提升,将迎来全新的ART底层架构,彻底告别Java虚拟机。在运行速度,流畅性上更出色。同时兼闷磨世容ARM、X86和MIPS等架构。还将首次加入对64位处理器的支持。提供桌面级别的性能体验。同时提供64位的Chrome浏览器,Gmail,日历,谷歌播放音乐等等。

--强大的多媒体

全面提升系统的音频、视频、拍照功能。支持多声道,通知支持插入USB麦克风,无数音频设备都能接入你的Android设备。

OpenGL ES 3.1的支持,使得Android与桌面设备一样在图形化处理上走在了最前沿。

同时支持RAW格式,支持30 fps全分辨率视频拍摄。更好的视频解码使得播放视频更加省电。

--更多功能

更强大、低功耗的蓝牙功能

提高文字的对比度和色彩反转,改善阅读体验

支持多达68种语言

更加简单安全的支付功能

改善池,蓝牙,数据显示

Android Beam:Android设备之间传文件只需轻轻一碰

系统支持双击唤醒(需要硬件支持)

改善键盘配件支持

1、Tap and Go

Tap and Go功能支持用户通过NFC配对两部Lollipop系统手机,旧手机可以将需要备份的全部内容,通过蓝牙传输给新手机。

2、OK Google语音指令

在新系统中,OK Google语音搜索功能得到进一步的优化。不论你的手机是否处在熄屏状态,你只需对手机轻轻说声“OK Google”,手机即刻被唤醒,例如当你连续说“OK Google,take a photo”,“OK Google,play some music”等等,手机就会根据指令执行播放音乐、拍摄照片、启动搜索、发送短讯。

3、Double tap to wake(双击唤醒设备)

类似于OK Google语音指令,用户唤醒设备也只需简单的轻轻双击屏幕。不过这个功能在Android 4.4操作系统下的诸多国产手机当中已经非常常见了。

4、Ambient Display

在新发布的搭载Android Lollipop系统的Google Nexus 6手机中,该功能得到了进一步的强化应用——当通知或消息到来时,在手机的锁屏界面就可直接阅读消息。不过系统中该功能的实现需要游盯设备配置OLED显示屏。

5、Face unlock(面部解锁)

在Lollipop系统中,Google花费大力气优化了面部解锁功能。当用户拿起手机处理锁屏界面上的消息通知时,面部解锁功能便自动被激活。随意浏览几条消息之后,手机已经默默地完成了面部识别,解锁就是这么简单!

6、Lock screen notifications(锁屏通知中心)

Android Lollipop中加入了全新风格的通知系统,改进后的通知系统会优先显示由用户设定的重要的信息,而将不太紧急的内容隐藏起来。用户只需要向下滑动就可以查看全部的通知内容,如果是短信、微信,就可以再通知栏里直接进行回复,非常人性化。

7、Priority Mode(优先模式)

借助Priority Mode模式中,用户挑选出“允许打扰”的app应用(剩下的就是“不允许打扰”类)。同时设定模式的持续时间,时间过后系统将会自动回到普通状态,以防止用户忘记关闭Priority Mode模式从而影响正常使用。

8、Guest Mode(访客模式)

Android Lollipop改善了支持多用户账户功能,并且为手机和平板设备提供了一种全新的Guest Mode访客模式。Guest Mode给每一位设备使用者都提供了安全绿色的一次性的操作空间,并且可以随时在guest account(访客账户)中删除用户数据。Android系统中的访客模式最早出现在LG平板电脑当中,其功用非常人性化,例如把手机、平板给不懂事儿的孩子使用时非常放心的。

9、Pin Apps(多任务视窗)

Lollipop在系统设置中提供了一项全新的功能——在多任务视窗中,给app应用窗口添加pin锁定代码。正如名字讲的那样,像是用别针锁定app应用,只用当输入正确的密码才能退出该app界面。虽然说与iOS系统的Guided Access功能也很像,但Guest Mode使用时好像更加简单快捷。

10、Improved Quick Settings(改进的快速设置)

快速设置界面得到了更好的规划改进,来优化用户体验。亮度调节变得更加灵活智能,默认初始设置是设备的亮度等级随着环境光线的变化而适当调节。同时音量调节滑动条也改进的更加人性化,也提供了多样的消息通知优先级按钮。

11、Overview(多任务一览)

多任务视窗现在有了一个新的名字Overview。在界面中,每一个app都是一张独立的卡片,拥有立体式的层叠效果,用户可以设定“最近应用程序”,通过滑动来快速切换app。最值得称道的一点是,像一个多叉树那样,在每一个app目录之下还能继续创建多重卡片。

12、Material Design

Google重新设计了更加趋于扁平化的Lollipop系统UI,称为Material Design。在今年6月26日举办的I/O 2014开发者大会上,许多人就已经提前领略到Material Design出色的功能了。到现在,它得到了更多的优化,例如给通讯录联系人添加不同的颜色优先等级。新的UI设计,在基本元素的处理上,借鉴了传统的印刷设计,从字体版式、网格系统,到空间、比例、配色、图像等方面,都惊醒了大胆的平面化的创新。这一举措,无疑是加大了国产UI设计的难度与门槛。

9. 安卓权限详细介绍


安卓权限详细介绍
开发android程序的时候常常会设计到各种权限,程序执行需要读取到安全敏感项必需在androidmanifest.xml中声明相关权限请求,各种权限说明如下:
android.permission.ACCESS_CHECKIN_PROPERTIES
允许读写访问”properties”或弊罩表在checkin数据库中,改值可以修改上传( Allows read/write accessto the “properties” table in the checkin database, to change valuesthat get uploaded)
android.permission.ACCESS_COARSE_LOCATION
允许一个程序访问CellID或WiFi热点来获取粗略的位置(Allows an application to accesscoarse (e.g., Cell-ID, WiFi) location)
android.permission.ACCESS_FINE_LOCATION
允许一个程序访问精良位置(如GPS) (Allows an application to access fine (e.g.,GPS) location)
android.permission.ACCESS_LOCATION_EXTRA_COMMANDS
允许应用程序访问额外的位置提供命令(Allowsan application to access extra location provider commands)
android.permission.ACCESS_MOCK_LOCATION
允许程序创建模拟位置提供用于测试(Allows an application to create mock locationproviders for testing)
android.permission.ACCESS_NETWORK_STATE
允许程序访问有关GSM网络信息(Allowsapplications to access information about networks)
android.permission.ACCESS_SURFACE_FLINGER
允许程序使用SurfaceFlinger底层特性(Allows an application to useSurfaceFlinger’s low level features)
android.permission.ACCESS_WIFI_STATE
允许程序访问Wi-Fi网络状态信息(Allows applications to access information aboutWi-Fi networks)
android.permission.ADD_SYSTEM_SERVICE
允许程序发布系统级服务(Allows an application to publish system-levelservices).
android.permission.BATTERY_STATS
允许程序更新手机电池统计信息(Allows an application to update the collectedbattery statistics)
android.permission.BLUETOOTH
允许程序连接到已配衫闹对的蓝牙设备(Allowsapplications to connect to paired bluetooth devices)
android.permission.BLUETOOTH_ADMIN
允许程序发现和配对蓝牙设备(Allows applications to discover and pair bluetoothdevices)
android.permission.BRICK
请求能够禁用设备(非常危险)(Required to be able to disable the device (very*erous!).)
android.permission.BROADCAST_PACKAGE_REMOVED
允许程序广播一个提示消息在一个应用卜贺程序包已经移除后(Allows an application to broadcast anotification that an application package has been removed)
android.permission.BROADCAST_STICKY
允许一个程序广播常用intents(Allows an application to broadcast stickyintents)
android.permission.CALL_PHONE
允 许一个程序初始化一个电话拨号不需通过拨号用户界面需要用户确认(Allows an application to initiate aphone call without going through the Dialer user interface for theuser to confirm the call being placed.)
android.permission.CALL_PRIVILEGED
允 许一个程序拨打任何号码,包含紧急号码无需通过拨号用户界面需要用户确认(Allows an application to callany phone number, including emergency numbers, without goingthrough the Dialer user interface for the user to confirm the callbeing placed)
android.permission.CAMERA
请求访问使用照相设备(Required to be able to access the camera device. )
android.permission.CHANGE_COMPONENT_ENABLED_STATE
允 许一个程序是否改变一个组件或其他的启用或禁用(Allows an application to change whether anapplication component (other than its own) is enabled or not. )
android.permission.CHANGE_CONFIGURATION
允许一个程序修改当前设置,如本地化(Allows an application to modify the currentconfiguration, such as locale. )
android.permission.CHANGE_NETWORK_STATE
允许程序改变网络连接状态(Allows applications to change network connectivitystate)
android.permission.CHANGE_WIFI_STATE
允许程序改变Wi-Fi连接状态(Allows applications to change Wi-Fi connectivitystate)
android.permission.CLEAR_APP_CACHE
允许一个程序清楚缓存从所有安装的程序在设备中(Allows an application to clear the caches ofall installed applications on the device. )
android.permission.CLEAR_APP_USER_DATA
允许一个程序清除用户设置(Allows an application to clear user data)
android.permission.CONTROL_LOCATION_UPDATES
允许启用禁止位置更新提示从无线模块(Allows enabling/disabling location updatenotifications from the radio. )
android.permission.DELETE_CACHE_FILES
允许程序删除缓存文件(Allows an application to delete cache files)
android.permission.DELETE_PACKAGES
允许一个程序删除包(Allows an application to delete packages)
android.permission.DEVICE_POWER
允许访问底层电源管理(Allows low-level access to power management)
android.permission.DIAGNOSTIC
允许程序RW诊断资源(Allows applications to RW to diagnostic resources. )
android.permission.DISABLE_KEYGUARD
允许程序禁用键盘锁(Allows applications to disable the keyguard )
android.permission.DUMP
允许程序返回状态抓取信息从系统服务(Allows an application to retrieve state mpinformation from system services.)
android.permission.EXPAND_STATUS_BAR
允许一个程序扩展收缩在状态栏,android开发网提示应该是一个类似windowsmobile中的托盘程序(Allows an application to expand or collapse thestatus bar. )
android.permission.FACTORY_TEST
作为一个工厂测试程序,运行在root用户(Run as a manufacturer test application,running as the root user. )
android.permission.FLASHLIGHT
访问闪光灯,android开发网提示htcDream不包含闪光灯(Allows access to the flashlight )
android.permission.FORCE_BACK
允许程序强行一个后退操作是否在顶层activities(Allows an application to force a BACKoperation on whatever is the top activity. )
android.permission.FOTA_UPDATE
暂时不了解这是做什么使用的,android开发网分析可能是一个预留权限.
android.permission.GET_ACCOUNTS
访问一个帐户列表在Accounts Service中(Allows access to the list of accounts inthe Accounts Service)
android.permission.GET_PACKAGE_SIZE
允许一个程序获取任何package占用空间容量(Allows an application to find out the spaceused by any package. )
android.permission.GET_TASKS
允 许一个程序获取信息有关当前或最近运行的任务,一个缩略的任务状态,是否活动等等(Allows an application toget information about the currently or recently running tasks: athumbnail representation of the tasks, what activities are runningin it, etc.)
android.permission.HARDWARE_TEST
允许访问硬件(Allows access to hardware peripherals. )
android.permission.INJECT_EVENTS
允 许一个程序截获用户事件如按键、触摸、轨迹球等等到一个时间流,android 开发网提醒算是hook技术吧(Allows anapplication to inject user events (keys, touch, trackball) into theevent stream and deliver them to ANY window.)
android.permission.INSTALL_PACKAGES
允许一个程序安装packages(Allows an application to install packages. )
android.permission.INTERNAL_SYSTEM_WINDOW
允许打开窗口使用系统用户界面(Allows an application to open windows that are foruse by parts of the system user interface. )
android.permission.INTERNET
允许程序打开网络套接字(Allows applications to open network sockets)
android.permission.MANAGE_APP_TOKENS
允 许程序管理(创建、催后、 z- order默认向z轴推移)程序引用在窗口管理器中(Allows an application tomanage (create, destroy, Z-order) application tokens in the windowmanager. )
android.permission.MASTER_CLEAR目前还没有明确的解释,android开发网分析可能是清除一切数据,类似硬格机
android.permission.MODIFY_AUDIO_SETTINGS
允许程序修改全局音频设置(Allows an application to modify global audiosettings)
android.permission.MODIFY_PHONE_STATE
允许修改话机状态,如电源,人机接口等(Allows modification of the telephony state _power on, mmi, etc. )
android.permission.MOUNT_UNMOUNT_FILESYSTEMS
允许挂载和反挂载文件系统可移动存储(Allows mounting and unmounting file systems forremovable storage. )
android.permission.PERSISTENT_ACTIVITY
允许一个程序设置他的activities显示(Allow an application to make its activitiespersistent. )
android.permission.PROCESS_OUTGOING_CALLS
允许程序监视、修改有关播出电话(Allows an application to monitor, modify, or abortoutgoing calls)
android.permission.READ_CALENDAR
允许程序读取用户日历数据(Allows an application to read the user’s calendardata.)
android.permission.READ_CONTACTS
允许程序读取用户联系人数据(Allows an application to read the user’s contactsdata.)
android.permission.READ_FRAME_BUFFER
允许程序屏幕波或和更多常规的访问帧缓冲数据(Allows an application to take screen shotsand more generally get access to the frame buffer data)
android.permission.READ_INPUT_STATE
允许程序返回当前按键状态(Allows an application to retrieve the current state ofkeys and switches. )
android.permission.READ_LOGS
允许程序读取底层系统日志文件(Allows an application to read the low-level systemlog files. )
android.permission.READ_OWNER_DATA
允许程序读取所有者数据(Allows an application to read the owner’s data)
android.permission.READ_SMS
允许程序读取短信息(Allows an application to read SMS messages.)
android.permission.READ_SYNC_SETTINGS
允许程序读取同步设置(Allows applications to read the sync settings)
android.permission.READ_SYNC_STATS
允许程序读取同步状态(Allows applications to read the sync stats)
android.permission.REBOOT
请求能够重新启动设备(Required to be able to reboot the device. )
android.permission.RECEIVE_BOOT_COMPLETED
允 许一个程序接收到 ACTION_BOOT_COMPLETED广播在系统完成启动(Allows an application toreceive the ACTION_BOOT_COMPLETED that is broadcast after thesystem finishes booting. )
android.permission.RECEIVE_MMS
允许一个程序监控将收到MMS彩信,记录或处理(Allows an application to monitor incomingMMS messages, to record or perform processing on them. )
android.permission.RECEIVE_SMS
允许程序监控一个将收到短信息,记录或处理(Allows an application to monitor incoming SMSmessages, to record or perform processing on them.)
android.permission.RECEIVE_WAP_PUSH
允许程序监控将收到WAPPUSH信息(Allows an application to monitor incoming WAP pushmessages. )
android.permission.RECORD_AUDIO
允许程序录制音频(Allows an application to record audio)
android.permission.REORDER_TASKS
允许程序改变Z轴排列任务(Allows an application to change the Z-order oftasks)
android.permission.RESTART_PACKAGES
允许程序重新启动其他程序(Allows an application to restart otherapplications)
android.permission.SEND_SMS
允许程序发送SMS短信(Allows an application to send SMS messages)
android.permission.SET_ACTIVITY_WATCHER
允许程序监控或控制activities已经启动全局系统中Allows an application to watch andcontrol how activities are started globally in the system.
android.permission.SET_ALWAYS_FINISH
允许程序控制是否活动间接完成在处于后台时Allows an application to control whetheractivities are immediately finished when put in the background.
android.permission.SET_ANIMATION_SCALE
修改全局信息比例(Modify the global animation scaling factor.)
android.permission.SET_DEBUG_APP
配置一个程序用于调试(Configure an application for debugging.)
android.permission.SET_ORIENTATION
允许底层访问设置屏幕方向和实际旋转(Allows low-level access to setting theorientation (actually rotation) of the screen.)
android.permission.SET_PREFERRED_APPLICATIONS
允 许一个程序修改列表参数PackageManager.addPackageToPreferred()和 PackageManager.removePackageFromPreferred()方法(Allows anapplication to modify the list of preferred applications with thePackageManager.addPackageToPreferred() andPackageManager.removePackageFromPreferred() methods.)
android.permission.SET_PROCESS_FOREGROUND

10. android js交互获取不到Android的方法

因为这里的数据传递有问题,public void takePhotos(String []param) java中声脊昌吵明的是一个string类型的数迅基组,而要js中['hello','world']并樱侍不代表是java中的数组。

热点内容
惠普电脑选购要考虑哪些因素配置 发布:2025-02-12 22:43:50 浏览:220
算法导论和算法 发布:2025-02-12 22:43:13 浏览:929
儿童电动车遥控如何配置 发布:2025-02-12 22:37:54 浏览:247
crm客户关系管理源码 发布:2025-02-12 22:34:10 浏览:986
c与java编译过程 发布:2025-02-12 21:47:47 浏览:373
python的面向对象 发布:2025-02-12 21:46:10 浏览:613
医学影像存储解决方案 发布:2025-02-12 21:45:58 浏览:976
股票走势预测算法 发布:2025-02-12 21:45:06 浏览:769
游戏lua脚本 发布:2025-02-12 21:45:01 浏览:918
怎么下载安卓版的光子助手 发布:2025-02-12 21:43:45 浏览:454