如何在Android4.0.4锁屏界面的电话图标右上角显示未接电话个数?

目前,未接电话个数也要获取到。存在的问题就是如何在电话图标右上角显示未接电话个数?
电话图标是控件MultiWaveView上的图标,该类是系统已经定义好的。我想通过直接集成View来自定义自己的View,然后在OnDraw函数通过Canvas和paint,指定坐标来画。但始终是没有显示出来。自定义view的OnDraw函数也有跑到。请指教要实现这效果,该怎样是画未接个数呢?效果图:enter image description here
我是在自定义的handler中调用构造函数。每10s就会handler处理。

private final Handler mUpdateMissCallNum = new Handler() {
@Override
public void handleMessage(Message msg) {
Log.i(TAG, "mUpdateMissCallNum");
switch (msg.what) {
case UPDATESTART:

Log.i(TAG, "UPDATESTART");
sNewMissedCallCount = getMissedCallCount(mContext);
if (sNewMissedCallCount != sTempMissedCallCount)
{

Log.i(TAG, "sNewMissedCallCount != sTempMissedCallCount");
new Thread(new Runnable()
{
public void run()
{

Log.i(TAG, "sNewMissedCallCount is:"+sNewMissedCallCount);

Log.i(TAG, "sTempMissedCallCount is:"+sTempMissedCallCount);
sTempMissedCallCount = sNewMissedCallCount;
mMissedCallView=new MissedCallView(mContext,sTempMissedCallCount);
Log.i(TAG, "sTempMissedCallCount is:"+sTempMissedCallCount);
        }
        }
    ).start();
    }
    break;
    default:
    break;
    }
}
}

mMissedCallView=new MissedCallView(mContext,sTempMissedCallCount);这就是我调用自定义view的地方。通过直接用坐标和canvas,paint画,不要再在xml文件里去写吧。
锁屏用到的xml文件:Keyguardscreentabunlock.xml (framework\base\core\res\res\layout)该文件中用系统自定义的波纹锁屏

<com.android.internal.widget.multiwaveview.MultiWaveView
android:id="@+id/unlockwidget"
android:orientation="horizontal"
android:layoutwidth="matchparent"
android:layoutheight="matchparent"
android:layout_alignParentBottom="true"
        android:targetDrawables="@array/lockscreen_targets_with_camera"
        android:targetDescriptions="@array/lockscreen_target_descriptions_with_camera"
        android:directionDescriptions="@array/lockscreen_direction_descriptions"
        android:handleDrawable="@drawable/ic_lockscreen_handle"
        android:waveDrawable="@drawable/ic_lockscreen_outerring"
        android:outerRadius="@dimen/multiwaveview_target_placement_radius"
        android:snapMargin="@dimen/multiwaveview_snap_margin"
        android:hitRadius="@dimen/multiwaveview_hit_radius"
        android:rightChevronDrawable="@drawable/ic_lockscreen_chevron_right"
        android:horizontalOffset="0dip"
        android:verticalOffset="60dip"
        android:feedbackCount="3"
        android:vibrationDuration="20"
        />

效果图:enter image description here
我们只是把相机改成了拨号,就是在这拨号图标上打算画上未接电话数。请指教,谢谢!
这个类存放位置:framework\base\core\java\com\android\internal\widget\multiwaveview\MissedCallView.java

public class MissedCallView extends View {

private static final String TAG = "MissedCallViews";

public static final int UPDATESTART = 10;

private static final int DELAYTIME = 10000;

private int sTempMissedCallCount=-1;

Context mContext;

Canvas mCanvas;

public MissedCallView(Context context) 
{

super(context);

Log.i(TAG, "MissedCallView1");

mCanvas=new Canvas();

}

public MissedCallView(Context context, AttributeSet attrs)
{ 
super(context, attrs);

Log.i(TAG, "MissedCallView2");

mCanvas=new Canvas();

}

public MissedCallView(Context context,int missedCallNum) {

super(context);

sTempMissedCallCount=missedCallNum;

Log.i(TAG, "MissedCallView3");

mCanvas=new Canvas();

}

@Override 
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

if(sTempMissedCallCount>0)

{

Paint paint=new Paint(Paint.ANTIALIASFLAG); 
paint.setColor(Color.RED); Log.i(TAG,"Integer.toString(sTempMissedCallCount)is:"+Integer.toString(sTempMissedCallCount)); canvas.drawText(Integer.toString(sTempMissedCallCount),40,310,paint);//50 invalidate();

Log.i(TAG, "invalidate");

}

}

} 

这是自定义view。只跑了 这个构造函数MissedCallView(Context context,int missedCallNum)。是在我定义的public class MissCallObserver extends ContentObserver监听未接电话个数类中调用的。为什么没有跑onDraw函数?请指教。未接电话个数获取是正确的。关键是显示了。

zhongyuanceshi
zhongyuanceshi 函数中也采用Canvas和paint,指定坐标画未接电话个数,来电话不接,待熄屏锁屏后再点亮就会显示。但这不符合我的要求。我的要求是马上显示。所以就自定义View但没显示成功。具体帖子链接:http://bbs.csdn.net/topics/390281494
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 自己定义了一个MissedCallView.java继承View,在onDraw里用Canvas和paint,指定坐标画未接电话个数,有跑到,就是没有显示成功。如何我在MultiWaveView类中(这个是系统定义的view)的onDraw
大约 7 年之前 回复
nana4ever
nana4ever 是你自己定义的锁屏界面吗?如果是自己定义的,就是可以的。
大约 7 年之前 回复
ce_la_vie
ce_la_vie 我在答案里给加了连接,你打开连接看看就有说明和使用方法
大约 7 年之前 回复
ce_la_vie
ce_la_vie 看一下我的补充
大约 7 年之前 回复

8个回答

布局使用FrameLayout,将电话图标控件放下面,默认显示,未接个数控件放上面,默认隐藏;
逻辑采用ContentObserver监听电话数据库的变化,数据变化时查询数据库,得到未接电话个数

可以用标记flagFLAG_SHOW_WHEN_LOCKED实现

public static final int FLAG_SHOW_WHEN_LOCKED

添加到API 5中

flag: 当屏幕被锁时显示指定标记,这会让应用窗口优先于其他窗口,可以用`FLAG_KEEP_SCREEN_ON`打开屏幕,在keyguard之前直接显示窗口,用`FLAG_DISMISS_KEYGUARD`自动解除keyguard。

在图片中显示2这个数量:

在系统设置中设置alarm字符串

String message = "2";
Settings.System.putString(context.getContentResolver(),
        Settings.System.NEXT_ALARM_FORMATTED, message);

补充:

需要查询未接电话的个数,然后在Cursor获取查询到的总数:

String[] projection = { CallLog.Calls.CACHED_NAME, CallLog.Calls.CACHED_NUMBER_LABEL, CallLog.Calls.TYPE };
       String where = CallLog.Calls.TYPE+"="+CallLog.Calls.MISSED_TYPE;          
       Cursor c = this.getContentResolver().query(CallLog.Calls.CONTENT_URI, selection,where, null, null);
       c.moveToFirst();    
       Log.d("CALL", ""+c.getCount()); //其他操作
        if(c.getCount() == SOME_VALUE_TO_START_APP_ONE)

在where语句中,设置选择数据的条件,根据你的需求,应该是CallLog.Calls.MISSED_TYPE

还可以选择来电的名字,号码,家庭工作什么的。

表达式和SQL查询语句是等价的,比如:

SELECT CACHED_NAME, CACHED_NUMBER_LABEL, TYPE FROM CONTENT_URI WHERE TYPE=MISSED_TYPE

android锁屏的说明:http://code.google.com/p/mylockforandroid/wiki/LockActivity

ce_la_vie
ce_la_vie 不好意思,现在不能上qq。我在答案中给你加了一个锁屏的连接,你看一下
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 你好,有看到链接。还是不怎么清楚用到解决我的问题。请指教?我加了233393756这个CSDNask,我是:zhongyuanceshi-android,不知道你有没有加,是哪位?
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 未接电话数我已经求得。没看懂是怎样用flag:FLAG_SHOW_WHEN_LOCKED。请问大概流程?
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 谢谢ce_la_vie的回复,但没看懂如何用FLAG。未接电话数应该要放在一个控件中吧。请问大概流程是什么?未接电话数以求得。谢谢!
大约 7 年之前 回复

如果我理解不错的话,你是想自绘View
你把问题理清楚,就两点关健地方,
1:取得未接电话条数
2:将这个int型变量显示
问题(1)可参考下面代码:

private void findNewCallCount(){     
        Cursor  csr = null;     
        int missedCallCount = 0;   
        try {     
            csr = getContentResolver().query(Calls.CONTENT_URI, new String[]{Calls.NUMBER,Calls.TYPE,Calls.NEW},   
                    null,null,Calls.DEFAULT_SORT_ORDER);     
            if(null != csr){   
                while(csr.moveToNext()){   
                    int type = csr.getInt(csr.getColumnIndex(Calls.TYPE));   
                    switch (type){   
                        case Calls.MISSED_TYPE:   
                            if(csr.getInt(csr.getColumnIndex(Calls.NEW)) == ){   
                                missedCallCount++;   
                            }   
                            break;   
                        case Calls.INCOMING_TYPE:   
                            break;   
                        case Calls.OUTGOING_TYPE:   
                            break;   
                    }   
                }   
            }   
        } catch (Exception e) {     
            e.printStackTrace();     
        } finally {     
            csr.close();     
        }     
        newCallCount = missedCallCount;//未读电话数目     
    }

问题(2)关于canvas显示问题
这样就可以把字写上去了
//canvas.drawText("123条记录", x, y, mPaint);//xy坐标
你的view是怎么写的,可以log调试分析呀。
你想立既显示,却未公布你相关代码,我猜肯定是未刷新造成的
当有新的未接电话,立马刷新canvas,刷新方式多样
invalidate或者postinvalindate()都能调用onDraw函数还有矩形区域设置等地方需
注意,你可以搜"android canvas refresh"
你需要一个单独线程跟踪或是启动个service监听。

franzhong
franzhong 先回答2:了解为啥会不停的调用,默认不会这样。是否有线程run?1:值不对,检查是哪些地方可以改它的值,一是初始化地方,二是其他地方,例如,赋值时就传的是-1,是否有这种可能?好在问题朝前进方向发展,现在就是一个值的问题了,你该学学如何调试程序,要不很是麻烦
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 嗯。把if(sTempMissedCallCount>0)去掉重新编译后发现:log一直在打印:Num is:-1 Integer.toString(sTempMissedCallCount) is:-1 invalidate这三条语句,也就是ondraw函数中的。但界面没有看到显示。存在问题:1:ondraw函数中获取的sTempMissedCallCount值不对,不是未接电话个数,始终为-1.2:没有显示,而是不停的调用ondraw函数。
大约 7 年之前 回复
franzhong
franzhong 有跑到,上面你跟我这样说的"遗憾的事还是没有跑onDraw函数",关于锁屏的事你可以了解: boolean inKeyguardRestrictedInputMode();对问题要举一反三啊,问题是无穷不尽的,解决一下问题要明白怎么回事,多想一下,下一个问题你就能自已解决了
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 有跑到onDraw方法,但是是在熄屏之后(这之前处于解锁。熄屏后也锁屏了),此时Num is:-1.跑了构造函数2:MissedCallView2,而不是从调用的构造函数3传过来的值,所以没有if判断应该会显示-1的。请问:这是什么原因导致的,而没有只要是锁屏界面就显示呢?
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 嗯。你的建议很好。之前我是有在FM模块自定义过View的,也显示OK。请问:你用我代码是放在锁屏源码下调试吗?我仅仅在MultiWaveView.java的onDraw画采用同样方法画是可以显示的(这仅是验证,但不是我要的效果应该这个要锁屏后才显示)。还是自己写了一个Activity的Demo调试的?
大约 7 年之前 回复
franzhong
franzhong 在我这是好着的,你别纠结这些事了,不熟悉的话调试也慢,你重写个view类玩玩,花他个一两小时,搞明白了再来看这块,要不你头都晕了,效率不高还出不来;
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 遗憾的事还是没有跑onDraw函数。分别在3个构造函数末尾及public void run() 函数末尾添加mMissedCallView.invalidate();及invalidate()后,都没有画出来。
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 有添加:@Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Log.i(TAG, "Num is:"+sTempMissedCallCount); 我先在三个构造函数末尾加上invalidate编译再试试。
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi invalidate这个函数调用,要在view中才能调用吧,否则报错。我在构造函数 MissedCallView(Context context,int missedCallNum)调用invalidate刷新可以吗?还是在哪个地方比较好?
大约 7 年之前 回复
franzhong
franzhong 你刷新一下就可以了,无论何时刷新都会被调用。 invalidate();
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi onDraw函数始终没有跑到,没画成功,还请指教。继承view的重载函数onDraw应该不用我们自己显示调用吧,系统会自己调用(上面大错字了),跑了构造函数,按理说就启动了这个自定义VIew吧?
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 非常感谢你的解疑答覆。按照你上面的建议。onDraw函数始终没有跑到。构造函数有跑到:MissedCallView3 sTempMissedCallCount is:1。这也可以看出未接电话传过来也是对的。继承view的重载函数onDraw应该是用我们自己显示调用吧,系统会调用。
大约 7 年之前 回复
franzhong
franzhong 并且,调用的时候应先调用初始化missedCallNum的那个构造,可看log是否输出MissedCallView3;再在你的onDraw的if条件前面加个Log,如果没进条件里,你还以为未执行呢。加上这句Log.i(TAG, "Num is:"+sTempMissedCallCount);有这些信息你就能明白原因出在哪儿了
大约 7 年之前 回复
franzhong
franzhong 哦,我已知晓,你的paint为啥那样的,你先注释后改为Paint mPaint = new Paint();
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 获取未接电话数是OK。关键是显示不了。我是在源码基础上修改的。自定义MissedCallView代码见上面。谢谢!
大约 7 年之前 回复

MultiWaveView 接受的是Drawable, 所以最简单的方法是更改为新的BitmapDrawable,里面包含电话的icon和未接电话数,然后MultiWaveView.postInvalidate即可。

cytown
Billy_崔海斌 使用postInvalidate().
大约 7 年之前 回复
cytown
Billy_崔海斌 你要用handler去执行mMultiWaveView.invalidate(),在callback里面不能调用UI变更
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 在文件KeyguardStatusViewManager.java (framework\base\policy\src\com\android\internal\policy\impl)中的, private phoneStateCallback mPhoneCallback = new phoneStateCallback(){ public void onPhoneStateChanged(int phoneState) {加入mMultiWaveView.invalidate();。(有电话就会跑这里).编译后开机不了。请cytown给完整的代码。我试了很多方法都不行。
大约 7 年之前 回复
cytown
Billy_崔海斌 当触发新的来电什么的时候,要通知MultiWaveView去invalidate.
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 有尝试仅仅在MultiWaveView.java中文件中处理,包括:获取电话数以及在onDraw方法中直接用Canva和Paint指定坐标画出未接个数,但是只有在熄屏后(锁屏了)再点亮,才看到刷新画上了。而没有不管什么情况下,只要是亮屏锁屏状态就及时显示。还请 cytown指教,你的方法具体是怎样实现?
大约 7 年之前 回复
zhongyuanceshi
zhongyuanceshi 最简单的方法是更改为新的BitmapDrawable.------你的意思是不用自定义View?请问该如何更改为新的BitmapDrawable?并且把未接电话数和电话Icon绑在一起?谢谢
大约 7 年之前 回复

先注释后改为Paint mPaint = new Paint(); franzhong

private void findNewCallCount(){

Cursor csr = null;

int missedCallCount = 0;

try {

csr = getContentResolver().query(Calls.CONTENT_URI, new String[]{Calls.NUMBER,Calls.TYPE,Calls.NEW},

null,null,Calls.DEFAULT_SORT_ORDER);

if(null != csr){

while(csr.moveToNext()){

int type = csr.getInt(csr.getColumnIndex(Calls.TYPE));

switch (type){

case Calls.MISSED_TYPE:

if(csr.getInt(csr.getColumnIndex(Calls.NEW)) == ){

missedCallCount++;

}
break;

case Calls.INCOMING_TYPE:

break;

case Calls.OUTGOING_TYPE:

break;

}

}

}

} catch (Exception e) {

e.printStackTrace();

} finally {

csr.close();

}

newCallCount = missedCallCount;//未读电话数目

}

使用github上的开源库BadgeView可以实现你的效果,你的功能就靠你自己来写了!

这个效果一般都是使用相对布局来实现的,在MMS中有实现,可以参考一下。
原理是,在电话图标所在的位置(坐标),计算数字显示的坐标,然后设置一个TextView到相应的位置,用以现实数字。
应该是不需要自定义View来实现。每隔一定时间更新一下TextView显示的数字就可以了。
这里需要注意的是,TextView中显示的数字的位置需要根据数字的宽度调整,否则数字显示的不美观。同时字体的大小也需要有调整。也就是数字位数越多,字体也就相应的小一点,否则是显示不开的,同时也美观。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android4.0之后怎么实现锁屏功能(不改底层代码的情况下)???,请高手指点!!
android4.0之后怎么实现锁屏功能(不改底层代码的情况下)???,请高手指点!!
android4.0锁屏问题,对home键的处理处理
android4.0之后在应用层已经不能对home键进行处理了,问:我想实现锁屏功能,在应用层该怎么做呢,求各位大神指教!!!
Android7.0锁屏防误触
有没有大神知道Android7.0锁屏防误触的处理流程的?求教呀
Android 7.0开机广播的及时性
hi all 目前有个需求是重启机器后,要能马上从关机前的状态恢复。所以监听了 “android.intent.action.BOOT_COMPLETED” 此开机广播,但是此广播一般得在系统展示桌面后7秒钟左右才收到,所以会处理不及时。 后来我又注册了"android.media.AUDIO_BECOMING_NOISY",此广播比开机广播更早发出来,在还没看到锁屏或者桌面时,app已经收到此广播了。所以在Android6.0上能满足这需求,但是在Android7.0上,此media广播就没有发出。这是为什么呢?需要修改framework吗? 或者有没有其他重启后能及时发出的广播呢? 谢谢你。
android编程怎么在锁屏界面上显示文字
android编程中怎么在锁屏界面上显示文字,请大家帮我一下。
android 5.0以上通知显示方式
android 5.0 以上(不阉割)新增了通知的显示方式,一共有:状态栏,横幅,锁屏 3种,可在系统设置,通知中心开启或关闭,求教各位,如何在自己所写的应用中控制器显示方式,默认是只显示在状态栏的
Android 5.0 如何屏蔽HOME键
练习项目是一个锁屏软件,最近想加一些开屏密码功能来替代系统自带密码。 目前采用的是监听开屏启动Activity的方式,但是发现HOME键无法屏蔽。 查了网上的方法,都试过均无效。 请问Android 5.0之后是否有办法屏蔽HOME键?或有否其他解决方案。
android 6.0之后锁屏一段时间搜索不到beacon设备
最近做一款beacon相关的应用,我知道6.0之后搜索ble设备需要动态申请权限。我在activity申请权限的代码如下 @Override protected void onResume() { super.onResume(); Log.e("ScanActivity", "onResume方法"); //判断 当前android版本大于6.0 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (this.checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { Log.e("onResume","申请权限"); requestPermissions(new String[]{android.Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION); }else { startBeaconService(); } }else { startBeaconService(); } } //判断网络是否可用 public boolean isGpsEnable(final Context context) { LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE); boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (gps || network) { return true; } Toast.makeText(getApplicationContext(), "网络不可用",Toast.LENGTH_SHORT).show(); return false; } //回调权限 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case PERMISSION_REQUEST_COARSE_LOCATION: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (!isGpsEnable(this)){ Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); startActivityForResult(intent,100); }else { ScanActivity.this.finish(); Intent startIntent = new Intent(this, ScanActivity.class); startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(startIntent); startBeaconService(); } } else { super.onRequestPermissionsResult(requestCode, permissions, grantResults); } break; } } ``` ``` 在使用该应用时可以正常搜索到beacon设备,但离开应用或者锁屏一段时间后,有的手机就开始搜索不到设备了,比如小米锁屏一分多钟后无法搜索到设备,点开屏幕再次聚焦到屏幕可以继续搜索。但华为、oppo之类的再次聚焦也不行,我关闭了搜索设备的activity和服务重新点开也不行,,,就是要把应用kill掉之后再打开应用才能再次搜索到设备。。。。 搜索设备的代码一直在跑,但检测不到beacon设备,因为6.0之后ACCESS_COARSE_LOCATION权限才能搜索到设备,而ACCESS_COARSE_LOCATION权限属于比较危险的权限,我猜测申请到这个权限然后是在离开应用一段时间后这个权限被系统收回去了所以无法搜索到设备。 有没有什么办法让这个权限不被系统收回?或者收回后如何再次申请又不会让用户有所感知,就是能到达持续搜索到设备的效果就好。我试过在连续几次搜索到的设备都是空的时候就开启1像素的activity在这里重新申请权限,但这个方法对小米有用,对华为没有用。
android 锁屏界面下的通知栏显示机制问题
android原生机中 可以在设置中的锁屏设置页面对锁屏时是否显示通知栏进行设置,在代码中对应LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS,LOCK_SCREEN_SHOW_NOTIFICATIONS这两个设置字段,但是我一直没有找到锁屏界面或者通知栏模块是怎么利用这两个字段来实现在锁屏界面时对通知显示与否的控制机制代码,谁知道不
Android 锁屏状态下跳转Activity会闪现锁屏界面
如题,项目中碰到一个问题 锁屏状态下打开相机(Activity A) 录制视频结束后需要跳转到另外一个Activity B进行预览,Activity A是竖屏 B为横屏 跳转过程有时会闪现一下锁屏界面 然后出现 竖屏的Activity B 然后 再转为横屏 有大佬知道怎么解决吗。
android7.0以后国内推送怎么办
众所周知谷歌在国内服务无法使用,android的推送靠第三方,但是7.0以后又出了流量保护,大家都知道像华为手机甚至会在锁屏后一段时间关闭网络,这样即使集成了推送也没有了最初的意义,即时通讯的意义少了一半。目前推送该怎么办?
关于Android IDevicePolicyManager.aidl的问题
看关于Android锁屏的代码看到最后是调用了IDevicePolicyManager.aidl里面的方法。比如getPasswordQuality()。那IDevicePolicyManager.aidl这个文件最后又是怎么往下调用呢?该怎么追踪这种aidl文件的方法?
安卓开发,锁屏界面显示组件
自己写了个安卓手机软件,生成一个悬浮窗,能在任何界面显示,可是却不能在锁屏界面上显示,请问该怎么办做才能在锁屏界面上显示?
android 怎么实现在锁屏界面长按home键打开手电筒
android 怎么实现在锁屏界面长按home键打开手电筒,是在keyguard里面么,监听home键是 ACTION_CLOSE_SYSTEM_DIALOGS, reason = SYSTEM_DIALOG_REASON_RECENT_APPS 求问大神如何实现
dialog锁屏开屏后缺失界面
Android dialog 设定宽度为屏幕的0.8,activity默认横屏显示,锁屏开屏后,dialog右边缺失界面, ``` DisplayMetrics dm = new DisplayMetrics(); mActivity.getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; this.getWindow().setLayout((int) (width * 0.8), LayoutParams.WRAP_CONTENT); ``` ![图片说明](https://img-ask.csdn.net/upload/201501/14/1421229002_833116.png) onWindowFocusChanged加入后,界面拉升了,能不是不全 ``` public void onWindowFocusChanged(boolean hasFocus) { if(hasFocus){ DisplayMetrics dm = new DisplayMetrics(); mActivity.getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; this.getWindow().setLayout((int) (width * 0.8), LayoutParams.WRAP_CONTENT); } super.onWindowFocusChanged(hasFocus); } ```![图片说明](https://img-ask.csdn.net/upload/201501/14/1421229235_635432.png)
Android 6.0指纹解锁清除密码解锁错误尝试次数
目前发现密码的错误次数只能通过输入正确的密码才能清除.指纹解锁设备后也无法清除.求专家支招.
Android应用在高API上反而不兼容
最近在练习写一个锁屏应用,在Android4.4下(小米)和模拟器下测试正常,在Android5.1下(一加手机)反而不能用,无法弹出激活设备管理器的页面。 请问如何解决? 另外我的SDK没有更新,不知这是否问题根源。
有没有方法可以在锁屏界面显示消息
android断收到消息推送的消息时怎么能在锁屏页弹出消息提示?大神指点
android中如何对app图标进行点击事件的监听?也就是一键锁屏的效果
如题,android中如何对app图标进行点击事件的监听,也就是类似一键锁屏的功能,一点图片就可以响应
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
HAL 硬件抽象层介绍
和你一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:和你一起终身学习,这里是程序员 Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、HAL 概述一、HAL 概述HAL定义了供硬件供应商实施的标准接口,该接口使Android无需考虑底层驱动程序的实现。使用HA...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
致 Python 初学者们!
作者| 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
使用 Angular 打造微前端架构的 ToB 企业级应用
这篇文章其实已经准备了11个月了,因为虽然我们年初就开始使用 Angular 的微前端架构,但是产品一直没有正式发布,无法通过生产环境实践验证可行性,11月16日我们的产品正式灰度发布,所以是时候分享一下我们在使用 Angular 微前端这条路上的心得(踩过的坑)了额,希望和 Angular 社区一起成长一起进步,如果你对微前端有一定的了解并且已经在项目中尝试了可以忽略前面的章节。 什么是微前...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
拿下微软、Google、Adobe,印度为何盛产科技圈 CEO?
作者 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 世界500强中,30%的掌舵人,都是印度人。 是的,你没看错。这是近日《哈佛商业评论》的研究结果。 其中又以微软CEO萨提亚·纳德拉(Satya Nadella)、和谷歌CEO桑达尔·皮查伊(Sundar Pichai,以下简称劈柴)最为出名。 微软CEO萨提亚·纳德拉(Satya Nadella) 其他著名印度...
Linux(内核剖析):19---中断总体概述
一、为什么要引入中断? 任何操作系统内核的核心任务,都包含有对连接到计算机上的硬件设备进行有效管理,如硬盘、蓝光碟机、键盘、鼠标、3D 处理器,以及无线电等。而想要管理这些设备,首先要能和它们互通音信才行。众所周知,处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢,那么内核就应该在此期间...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
深度学习笔记------卷积神经网络
深度学习笔记------卷积神经网络
一文带你入门Linux
文章目录1.1 Linux的概述:1.1.1 什么是Linux:1.1.1.1 学习Linux之前先了解Unix1.1.1.2 Linux的概述:1.1.1.3 Linux的历史:1.1.1.4 Linux系统的应用:1.1.1.5 Linux的版本1.1.1.6 Linux的主流版本1.2 Linux的安装:1.2.1 虚拟机安装:1.2.1.1 什么是虚拟机1.2.1.2 安装VmWare1....
普通三本毕业,我怎么一路艰辛进入阿里的
英雄不问出处? 自古以来就有这样一句话,真的英雄不问出处吗?这句话太挫了。普通三本院校的我,大四的时候居然都不知道什么是校招,所以出处太重要了。这也是没有机会参加阿里校招的原因,毕竟校招门槛比社招还是要低的,最重要的是校招进入阿里能让你的起点比别人更高。 有幸可以社招进入阿里,了解了校招的思路,赶紧介绍给学弟们,现在我们三本院校的小学弟今年居然有 3 个人通过了阿里的校招。下面我也把这份宝贵的经...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药...
疫情防控,开发者集结出战!
作者 | 屠敏出品 | CSDN(ID:CSDNnews)2020 年伊始,病毒肆虐,人心惶惶。截止北京时间 1 月 31 日 15 时 30 分,全国确诊新型冠状病毒肺炎的数字已达到了...
相关热词 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数 c#日期精确到分钟 c#自定义异常必须继承 c#查表并返回值 c# 动态 表达式树 c# 监控方法耗时 c# listbox c#chart显示滚动条
立即提问