我对这个问题感到非常困惑。我的gradle文件中有以下几行:
implementation "androidx.compose.runtime:runtime:1.0.0-alpha04"
implementation "androidx.compose.compiler:compiler:1.0.0-alpha04"
implementation "androidx.compose.runtime:runtime-rxjava2:1.0.0-alpha04"
Run Code Online (Sandbox Code Playgroud)
但是,当我构建时,出现以下错误:
Could not determine the dependencies of task ':app-name-omitted:prepareDebugKotlinCompileTask'.
> Could not resolve all task dependencies for configuration ':app-name-omitted:kotlin-extension'.
> Could not find androidx.compose:compose-compiler:1.0.0-alpha04.
Searched in the following locations:
- https://dl.google.com/dl/android/maven2/androidx/compose/compose-compiler/1.0.0-alpha04/compose-compiler-1.0.0-alpha04.pom
- https://repo.maven.apache.org/maven2/androidx/compose/compose-compiler/1.0.0-alpha04/compose-compiler-1.0.0-alpha04.pom
- https://jcenter.bintray.com/androidx/compose/compose-compiler/1.0.0-alpha04/compose-compiler-1.0.0-alpha04.pom
Required by:
project :app-name-omitted
Possible solution:
- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
Run Code Online (Sandbox Code Playgroud)
我对此感到困惑,因为编译器确实存在于 Google 的 repo 中:https ://maven.google.com/web/index.html#androidx.compose.compiler:compiler
如有必要,我可以发布更多信息,但我想保持简单。即使 compose 设置完全错误,为什么也找不到 POM 文件?
我需要能够播放通过RTSP接收的视频并同时将其保存到光盘(即SD卡).这是一个实时流,所以我不能先下载整个文件然后播放它.我必须同时演奏和录音.我可以使用MediaRecorder从机载摄像机录制视频,我可以使用MediaPlayer或VideoView接收RTSP流,但我不知道如何将两者结合起来.
MediaRecorder似乎是录制视频的唯一方式,但它只支持一个视频源:相机.它的setVideoSource()方法不允许其他来源.也许我需要以某种方式得到一个OutputStream,然后我可以写入一个文件?
谢谢你的帮助.
我有一个Android应用程序,需要在后台和单独的线程上执行工作.对于我的第一个概念验证,我将Application类子类化,并在onCreate()中生成一个执行后台工作的Thread.这很有用.但是,我刚才意识到,过去我曾在这种情况下使用过服务.
问题是,是否有理由对从Service生成的Thread而不是Application.onCreate()生成的Thread进行操作?该服务应该执行"后台"工作(它使用UI线程,除非使用了线程,我知道),它独立于Activity,并且可以在没有Activity可见的情况下运行.使用基于应用程序的线程似乎也完成了所有这些.通过不使用服务,它实际上消除了复杂性,因为Activity只是访问应用程序单例.据我所知,我没有必要绑定到服务.
我会得到使用服务会阻止的生命周期角落情况吗?这是我对这种方法的唯一担忧,但除此之外,我并没有以服务的好处出售.
我为此感到茫然.我在ViewPager中手动切换标签.我在Activity中有这个代码:
@Override
public void onBackPressed()
{
if (childFragmentStack.empty())
{
// Go to the devices screen
Intent intent = new Intent(this, SelectDeviceActivity.class);
startActivity(intent);
}
else
{
Fragment fragment = childFragmentStack.pop();
if (fragment == null)
{
return;
}
processingBackStack = true;
if (fragment instanceof ViewChildFragment)
{
viewFragment.activateFragment((ViewChildFragment) fragment);
mViewPager.setCurrentItem(VIEW_FRAGMENT_INDEX, true);
}
else if (fragment instanceof SetupChildFragment)
{
setupFragment.activateFragment((SetupChildFragment) fragment);
mViewPager.setCurrentItem(SETUP_FRAGMENT_INDEX, true); //**
}
else if (fragment == homeFragment)
{
mViewPager.setCurrentItem(HOME_FRAGMENT_INDEX, true); //**
}
processingBackStack = false;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我在选项卡之间滚动,我将它们添加到堆栈('childFragmentStack').我正在使用FragmentPagerAdapter来处理片段.如果我执行View-> Setup-> View-> Setup之类的操作然后将其反转,它只会达到Setup-> …
我的应用程序显示进度或AlertDialog用户非常常见.如果用户将应用程序放入后台然后稍后返回,我希望Dialog仍然显示该应用程序.有没有办法让Android处理这个?我想它要么不关闭对话框,要么在Activity恢复时自动重新打开它.
到目前为止它看起来像没有.我没有找到大量关于此的结果(大多数人遇到方向更改的问题,我的应用程序不允许),但很少有人询问进入后台.我已经尝试了DialogFragment常规的每个排列Dialog,但是当按下主页按钮并且从任务管理器打开应用程序时,它们都会消失.
我甚至没有任何代码可以展示,因为它们都处于在线各种示例的测试阶段.我怀疑我必须自己管理这个,通过签入onResume()是否应该显示的东西.如果是这种情况我可以忍受它,但我想知道肯定.
如果不亲眼所见,我不会相信这一点。
string test = String.Format( "{0} test {1}", "Mark", 13 );
Run Code Online (Sandbox Code Playgroud)
结果为"{0} test {1}"for变量test
string test = string.Format( "{0} test {1}", "Mark", 13 );
Run Code Online (Sandbox Code Playgroud)
结果为"Mark test 13"for变量test
哇哈哈阿阿特?顺便说一下,这是Xamarin。我在这里很困惑。Visual Studio 8.0.4。我已经将testUI 的值分配给UI元素,将其记录到LogCat,并使用调试器进行了查看。他们都同意这个奇数。
我正在开发一个运行Android的自定义平板电脑(由我的公司构建为销售工具)的应用程序.应用程序需要通过虚拟串行端口与连接的USB设备进行通信.驱动程序已安装并运行良好(它是Silicon Labs的CP2101 USB转UART桥控制器).我使用的是串行端口库,网址为:http://code.google.com/p/android-serialport-api/.
问题是无论何时安装设备我都无权在Android中打开它.Android串口库需要打开一个文件,通常是/ dev/ttyUSB0,但是应用程序没有这样做的权限.如果我打开adb shell并运行"chmod 666/dev/ttyUSB0",一切都很棒.当然,我需要一个更持久的解决方案.
我不认为init.rc会起作用,因为我希望能够在安装时修改设备文件,而不仅仅是在启动时.有没有办法强制Linux以更宽松的权限安装此设备(或任何设备)?
提前致谢.
所以这是我的代码.'currentFragment'只是一个跟踪当前显示内容的字段.这是一个本身就是片段的类(所以我有一个显示片段的片段).
private void selectNavBarItem(NavbarItem v)
{
Fragment fragmentToUse = null;
if (v == setpointsNavItem)
{
fragmentToUse = setpointsFragment;
}
else if (v == rapidSetupNavItem)
{
fragmentToUse = rapidSetupFragment;
}
else if (v == outdoorResetNavItem)
{
fragmentToUse = outdoorResetFragment;
}
else if (v == rampDelayNavItem)
{
fragmentToUse = rampDelayFragment;
}
if (fragmentToUse != null)
{
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
if (currentFragment != null)
{
ft.detach(currentFragment);
}
currentFragment = fragmentToUse;
if (currentFragment.isDetached())
{
ft.attach(currentFragment);
}
else
{
ft.add(R.id.setup_content_holder, …Run Code Online (Sandbox Code Playgroud) 我不知道NonNull注释应该如何帮助.所以,让我说我有这个:
void noNullArg(@NonNull Object o)
{
// stuff
}
Run Code Online (Sandbox Code Playgroud)
如果我这样做,我会收到关于"o"如何为空的警告.
void foo()
{
Object o = null;
noNullArg(o);
}
Run Code Online (Sandbox Code Playgroud)
但如果我这样做,我根本不会收到任何警告.
void sendNull()
{
// Pass null and violate the annotation
foo(null);
}
void foo(Object o)
{
noNullArg(o);
}
Run Code Online (Sandbox Code Playgroud)
这是一个非常微不足道的案例,未被发现.最重要的是,编译器似乎认为如果设置@NonNull则检查null是不必要的,当它显然不是时(它表示条件总是为假).
我正在尝试使用Android的Wi-Fi Direct(如果您愿意,还可以使用P2P).我以为它在我的两部手机之间工作得非常好,但我意识到我遇到了WifiP2pManager.discoverPeers()和/或问题WifiP2pManager.requestPeers().我观察到了这些结果:
没有发现任何对等体,并且在1分钟内没有触发回调.我也通过Android Wi-Fi设置的Wi-Fi Direct部分观察到了这一点.这很奇怪,因为有时发现几乎立即完成.
我有一个Roku设备和电话B坐在电话A旁边.虽然所有设备都连接到我的Wi-Fi,但Roku只出现了~10%的时间,而电话A和B则相互出现.
当我从所有Wi-Fi断开两部手机并进行另一次扫描时,Roku出现了(!!!)但手机B没有,直到我刷新至少十次.
我的两部手机是Nexus 7(运行4.4.4)和Nexus 5(运行5.0).
我在Android 4.4手机上遇到了一个问题(特别是Galaxy S4,虽然我认为这不是手机本身的错误).使用Retrofit2.Http时,我在HTTPS上连接时收到以下错误:
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x737510d0: Failure in SSL library, usually a protocol error
error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failure (external/openssl/ssl/s23_clnt.c:741 0x727fb7d0:0x00000000)
Run Code Online (Sandbox Code Playgroud)
我发现有几个资源表明这是Android 4.4(1)中的一个错误,但给出的示例总是假设使用HttpsUrlConnection类,我没有使用它.
我确实在这里找到了一些关于为连接设置特定ConnectionSpec实例的答案,这似乎很有希望,因为它是特定于Retrofit的(2).不幸的是,这在错误方面没有区别.我的代码示例(我尝试了MODERN_TLS和COMPATIBLE_TLS):
return new OkHttpClient.Builder()
.addInterceptor(interceptor)
.connectionSpecs(Collections.singletonList(ConnectionSpec.MODERN_TLS))
.build();
Run Code Online (Sandbox Code Playgroud)
切换到"http"确实有效,但这不是最终版本的选项.绝对需要安全的加密连接,因此任何完全禁用HTTPS或盲目接受任何证书的解决方案都不可能被接受.
提前致谢!
(1)Javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL握手中止:SSL库失败,通常是协议错误
(2)改进OkHttp SSLHandshakeException
运行openssl给出以下内容:
[[my_computer]]$ ./openssl s_client -connect [[server_hidden_by_me]]:443 -tls1
CONNECTED(00000003)
depth=2 /C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Certification Authority
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:/OU=Domain Control Validated/OU=PositiveSSL/CN=[hidden_by_me]
i:/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation …Run Code Online (Sandbox Code Playgroud) android ×10
android-ndk ×1
c# ×1
java ×1
linux ×1
media-player ×1
retrofit ×1
retrofit2 ×1
rtsp ×1
serial-port ×1
ssl ×1
usb ×1
wifi-direct ×1
wifip2p ×1
xamarin ×1