新的Android API 22 getResources().getDrawable()
现已弃用.现在最好的方法是只使用getDrawable()
.
改变了什么?
android android-resources android-drawable android-5.1.1-lollipop
我构建了一个Web应用程序,并希望创建一个具有显示我的Web应用程序的webview的Android应用程序.按照Google Developer的说明创建应用后,我使用Android 5.1.1成功将其安装在手机上.
但是,当我第一次运行应用程序时,webview会显示以下消息:
网页无法显示
无法加载http://www.google.com.sg上的网页:
网:: ERR_CACHE_MISS
在Google上搜索了一段时间并尝试解决方案之后,我仍然坚持这个错误.我已经包含了所有必需的权限,因此不应该这样做.我的Android Studio也已全面更新,因此并非如此.
我已将项目的minSdkVersion从19更新为21.这导致5.0/5.1设备上的问题,我无法运行该应用程序.我一直在我的Application类上得到一个ClassNotFoundException.完整日志,应用程序类和gradle文件如下所示.如果我将我的项目还原为minSdkVersion 19,那么应用程序将在4.4+上运行,没有任何问题.
我试过了什么
清洗/重建
更新和降级构建工具版本
跨项目的所有支持库都具有相同的版本号
使我所有的清单类相对而绝对
更新了所有Sdk和构建工具
日志
04-27 14:37:07.152 6278-6278/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.package.testapp, PID: 6278
java.lang.RuntimeException: Unable to instantiate application com.package.TestApplication: java.lang.ClassNotFoundException: Didn't find class "com.package.Application" on path: DexPathList[[zip file "/data/app/com.package.testapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.package.testapp-1/lib/x86_64, /vendor/lib64, /system/lib64]]
at android.app.LoadedApk.makeApplication(LoadedApk.java:563)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4526)
at android.app.ActivityThread.access$1500(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.package.TestApplication" on path: DexPathList[[zip file "/data/app/com.package.testapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.package.testapp-1/lib/x86_64, /vendor/lib64, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at …
Run Code Online (Sandbox Code Playgroud) java android gradle android-5.0-lollipop android-5.1.1-lollipop
我什么android:elevation
时候使用app:elevation
?何时使用?
这两者有什么区别?
android android-layout android-xml android-5.0-lollipop android-5.1.1-lollipop
Android Lollipop推出了一种可以随时打开的节电模式,默认情况下,当电池电量为15%或更低时,它会打开.这给我的应用程序带来了问题,因为省电模式会禁用提供重要信息的动画.(只是为了给出上下文,我的应用程序允许用户配置Android Wear表盘;当他们保存新的"主题"时,我将主题移动到动作栏上的按钮,以便他们知道保存到的位置.电池保护程序禁用动画,当他们点击保存时没有任何反应,我认为这会令人困惑.)
那么,有没有办法以编程方式确定电池保护程序是否打开?这样我可以提供动画的替代方案,例如显示Toast.
android battery-saver android-5.0-lollipop android-5.1.1-lollipop
今天我在android中遇到了一个问题surfaceview for camera customization
.我尝试了下面的代码.
拍摄图像时出现问题,它会停止相机预览并且不会返回活动.
以下代码将在程序中实现.我从stackoverflow上的现有引用中获取此代码
支持班级.
public class AndroidCameraSurfaceview extends Activity implements
SurfaceHolder.Callback {
TextView testView;
Camera camera;
SurfaceView surfaceView;
SurfaceHolder surfaceHolder;
boolean preview;
PictureCallback rawCallback;
ShutterCallback shutterCallback;
PictureCallback jpegCallback;
int displayheight, displaywidth;
Camera.PreviewCallback previewCallback;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.camerasurfaceview);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
surfaceHolder = surfaceView.getHolder();
surfaceHolder.addCallback(this);
surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Bundle …
Run Code Online (Sandbox Code Playgroud)android android-intent android-camera android-5.1.1-lollipop
我目前正在开发一款适用于平板电脑的应用程序,可以在商店中展示广告.我需要为设置应用程序添加密码保护.为此,我需要检测设置应用程序是在后台服务中启动的.对于Android版本低于API 21的设备,可以使用getRunningTasks()完成此操作.不幸的是,此方法现已弃用.我尝试用这个答案实现我的目标,但事情并没有按照我的需要运作.我正在试着听,V/WindowManager( 740): Adding window Window{1f4535ef u0 com.android.settings/com.android.settings.Settings} at 9 of 16 (before Window{e14eed2 u0 Starting com.android.settings})
但我不能把它当成输出.我正在使用上面引用的答案中的代码.而不是烘烤它我在logcat中打印它.
你能告诉我如何在API 21以上的Android版本中实现我的目标吗?我知道这是可能的,因为像Smart AppLock这样的应用程序可以实现.提前致谢!
我试图在具有双Sim(两者都有效)的Android 5.1设备中获取MCC和MNC号码(基本上我想要IMSI号码但这些也足够了).由于5.1支持双Sim,所以我使用了这样的Subscription管理器:
SubscriptionManager manager = SubscriptionManager.from(this);
List<SubscriptionInfo> sil = manager.getActiveSubscriptionInfoList();
if (sil != null) {
for (SubscriptionInfo subInfo : sil) {
Log.v("TestMain", "SubInfo:" + subInfo);
}
} else {
Log.v("TestMain", "SubInfo: list is null");
}
Run Code Online (Sandbox Code Playgroud)
得到了这个输出:
07-24 18:28:32.162 3844-3844/? V/TestMain? SubInfo:{id=1, mcc 405 mnc 803, iccId=89918030914128062059 simSlotIndex=0 displayName=Aircel Karnataka carrierName=Aircel — Aircel Karnataka nameSource=0}
07-24 18:28:32.162 3844-3844/? V/TestMain? SubInfo:{id=2, mcc 405 mnc 803, iccId=8991860044481968955 simSlotIndex=1 displayName=CARD 2 carrierName=Vodafone Karnataka nameSource=0}
Run Code Online (Sandbox Code Playgroud)
MCC(将与同一个国家/地区相同)注意到虽然运营商不同,但MNC是相同的.
当我关掉手机时,我在logcat中看到了这一行:
07-24 18:31:02.295 616-616/? V/KeyguardUpdateMonitor? SubInfo:{id=1, mcc 405 mnc …
Run Code Online (Sandbox Code Playgroud) android android-source telephonymanager dual-sim android-5.1.1-lollipop
我正在尝试解码文件中的视频,并使用API Level 21及更高版本(Android OS 5.0 Lollipop)支持MediaCodec
的新异步模式将其编码为不同的格式.
在Big Flake,Google的Grafika等网站上以同步模式执行此操作有很多示例,并且StackOverflow上有许多答案,但它们都不支持异步模式.
我不需要在此过程中显示视频.
我相信一般的程序是用一个读取文件MediaExtractor
作为MediaCodec
(解码器)的输入,允许解码器的输出渲染成一个Surface
也是共享输入到MediaCodec
(编码器),然后最后写入编码器输出文件通过MediaMuxer
.它Surface
是在编码器设置期间创建的,并与解码器共享.
我可以将视频解码为a TextureView
,但Surface
与编码器共享而不是屏幕也没有成功.
我MediaCodec.Callback()
为我的两个编解码器设置了s.我认为问题在于我不知道在Encoder的回调onInputBufferAvailable()
函数中该怎么做.我不知道(或知道如何)将数据从Surface
编码器复制到编码器中 - 这应该自动发生(就像在解码器输出上一样codec.releaseOutputBuffer(outputBufferId, true);
).然而,我认为onInputBufferAvailable
需要打电话codec.queueInputBuffer
才能运作.我只是不知道如何设置参数而不从像MediaExtractor
Decode端使用的那样获取数据.
如果您有一个打开视频文件MediaCodec
的示例,对其进行解码,使用异步回调将其编码为不同的分辨率或格式,然后将其保存为文件,请分享您的示例代码.
=== 编辑 ===
下面是我在异步模式下尝试做的同步模式的一个工作示例:ExtractDecodeEditEncodeMuxTest.java:https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media /src/android/media/cts/ExtractDecodeEditEncodeMuxTest.java这个例子在我的应用程序中工作
android video-encoding mediacodec android-5.0-lollipop android-5.1.1-lollipop
我正在尝试使用自定义字体创建数字时钟小部件.事实证明这是我体验Android的最大挑战.(认为它会像它一样简单tc.setTypeFace("whatever")
并且完成它)
最好的方法似乎是刮擦TextClock
并使用a ImageView
并使用自定义AlarmManager
将Bitmap传递给它,以便每秒为视图创建一个新图像.
在进入Bitmap生成之前,我练习了一个简单的TextView
使用本教程的Alarm Manager Widget
我的问题是我无法每秒更新一次.我使用
am.setRepeating(AlarmManager.RTC_WAKEUP , System.currentTimeMillis()+1000, 1000, pi);
但它仍然只是每分钟左右更新它(虽然不是每分钟的顶部).我认为这与最新操作系统(Kitkat,Lollipop)的处理方式有关AlarmManagers
.
我的问题是:
这是正确的方法吗?如果没有,请解释我应该做什么.
如何让窗口小部件每秒更新一次?
android widget alarmmanager android-appwidget android-5.1.1-lollipop
android ×10
alarmmanager ×1
android-xml ×1
dual-sim ×1
gradle ×1
java ×1
mediacodec ×1
webview ×1
widget ×1