Escreva na frente
O horário atual é 01:29:20, 17 de abril de 2020, que é meia-noite. Depois de um dia agitado estudando e lidando com a lição de casa, finalmente tenho tempo para aprender o conhecimento de desenvolvimento do Android. Hoje estou aprendendo a transmissão de um dos quatro principais componentes do Android. O conteúdo da transmissão foi substancialmente modificado pelo Google após o Android 8.0, portanto, esse conteúdo não é muito para aprender e não é muito para usar.
Exibindo energia e outros conteúdos através do monitoramento de transmissão
Ainda é o jeito antigo, aprenda pelo exemplo. Aqui, escrevemos uma pequena demonstração para monitorar o poder. A interface não é mais exibida, observe principalmente a gravação de Activity:
private void registerBatteryReceiver() {
//第二步:我们要收听的频道是:电量变化
IntentFilter intentFilter = new IntentFilter();
//第三步:设置频道
intentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);
mBatteryLevelReceiver = new BatteryLevelReceiver();
//这种注册方式是动态注册
//第四步:注册广播
this.registerReceiver(mBatteryLevelReceiver,intentFilter);
}
O exposto acima é que o registro de receptores de transmissão (registro dinâmico) após o Android 8.0 é mais conveniente e fácil de usar. O registro estático é restrito pelo Google e muitas funções não estão mais disponíveis.
A seguir está o processamento do conteúdo recebido
if (intent.ACTION_BATTERY_CHANGED.equals(action)) {
Log.d(TAG,"收到了电量变化的广播 action is "+action);
Log.d(TAG,"当前电量为:"+ intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0));
int currentLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0);
if(mBatteryLevelText!=null){
mBatteryLevelText.setText("当前电量为:"+ intent.getIntExtra(BatteryManager.EXTRA_LEVEL,0));
}
int maxLevel = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);
//拿到当前电量的最大值后,再除以最大值
float percent = currentLevel*1.0f/maxLevel;
Log.d(TAG,"当前电量百分比为:"+percent*100+"%");
}
Como você pode ver, a operação ainda é muito simples. Da mesma forma, podemos adicionar código para implementar a instalação de aplicativos de monitoramento, conexão USB, etc.
intentFilter.addAction(Intent.ACTION_POWER_CONNECTED);
intentFilter.addAction(Intent.ACTION_POWER_DISCONNECTED);
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
intentFilter.addDataScheme("package");
else if(Intent.ACTION_POWER_CONNECTED.equals(action)){
Log.d(TAG,"usb线连接上了...");
mUsbStatusText.setText("usb连上了");
}else if(Intent.ACTION_POWER_DISCONNECTED.equals(action)){
Log.d(TAG,"usb线断开了...");
mUsbStatusText.setText("usb断开了");
}else if(Intent.ACTION_PACKAGE_ADDED.equals(action)){
Log.d(TAG,"应用安装了....");
}else if(Intent.ACTION_PACKAGE_REMOVED.equals(action)){
Log.d(TAG,"应用卸载了...");
}
(Os itens acima foram escritos após o Android 8.0)
Transmissão ordenada
A frequência da transmissão ordenada é relativamente baixa, portanto, apenas o farei aqui. A chamada transmissão ordenada significa que as transmissões enviadas estão em ordem e são transmitidas em ordem de alto a baixo. Para definir a transmissão ordenada no Android 8.0 e superior, é necessário registro dinâmico. O código não está mais publicado aqui, então corra.
Postscript
Devido à sua base fraca, é preciso mais esforço do que outros para alcançá-lo. Eu deveria aprender o desenvolvimento do Android nas férias de inverno, mas usei-o para consolidar minha fundação da web em java. Me fez baixar muito conteúdo. Trabalho duro é inevitável. Se você não lutar agora, vai se arrepender mais cedo ou mais tarde. Vamos lá. Boa noite