我尝试使用互联网上提供的示例示例中的FFMpeg库解码视频,我用新版本的ffmpeg搞清楚,这是我从我的类文件中调用的代码,
private static native int decodeVideo(String filename);
decodeVideo(getString(R.string._sdcard_abc_3gp));
Run Code Online (Sandbox Code Playgroud)
现在位于JNI目录的.c文件中,我写了这段代码,
jint Java_ru_dzakhov_ffmpeg_test_MainActivity_decodeVideo(JNIEnv* env, jobject
javaThis,jstring filename) {
AVFormatContext *pFormatCtx;
int i, videoStream;
AVCodecContext *pCodecCtx;
AVCodec *pCodec;
AVFrame *pFrame;
AVFrame *pFrameRGB;
AVPacket packet;
int frameFinished;
int numBytes;
uint8_t *buffer;
// Register all formats and codecs
av_register_all();
// Open video file
const jbyte *str;
str = (*env)->GetStringUTFChars(env, filename, NULL);
if(av_open_input_file(&pFormatCtx, str, NULL, 0, NULL)!=0)
{
LOGI("Can't open file '%s'\n", str);
return 1;
}
else
{
LOGI("File is opened\n");
LOGI("File '%s', Codec %s",pFormatCtx->filename,pFormatCtx->iformat->name);
} …Run Code Online (Sandbox Code Playgroud) 几天前我开始使用Gradle构建系统并让脚本按照我的意愿工作,这里是:
buildscript {
repositories {
mavenCentral()
}
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 17
buildToolsVersion '18.0.1'
productFlavors {
flavor1 {
packageName "flavor1"
}
flavor2 {
packageName "flavor2"
}
flavor3 {
packageName "flavor3"
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
signingConfigs {
release {
storeFile file("test.keystore")
storePassword "*****"
keyAlias "****"
keyPassword "*****"
}
}
buildTypes {
release { …Run Code Online (Sandbox Code Playgroud) 我在我的Android项目中使用Dagger 2,但我在调试时遇到问题.我知道编译失败是因为我的匕首2设置中的错误(以前有过)但是几乎不可能跟踪它,因为我没有得到正确的错误消息告诉我问题出在哪里.我得到的只是显示注释处理失败的消息.沿着:
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
Error:(14, 28) error: cannot find symbol class BR
Error:(17, 40) error: package com.some.package.databinding does not exist
Error:(17, 51) error: cannot find symbol class DaggerSomeComponent
...
Run Code Online (Sandbox Code Playgroud)
也许它与某些事实有关,我也在使用数据绑定!?
我正在使用Dagger 2.5,Gradle插件2.1.2和android-apt 1.8.
谢谢你的帮助!
android annotation-processing dagger-2 android-databinding kapt
我通过扩展AbstractAccountAuthenticator和实现addAccount()和创建了自己的Android帐户身份验证器getAuthToken().其中的一些方法被称为AccountManager,但其他方法则没有.
AccountManager accountManager = AccountManager.get(activity);
accountManager.addAccount(MyAccountAuthenticator.ACCOUNT_TYPE,
MyAccountAuthenticator.AUTHTOKEN_TYPE_FULL_ACCESS, null, null,
activity, callback, null);
Run Code Online (Sandbox Code Playgroud)
当我打电话给AccountManager#getAuthToken()我时,问题就出现了Activity.AccountManager不会调用getAuthToken()我在我的定义中的方法AccountAuthenticator.它调用一些其他默认方法,只检查authToken启动之前是否存在AuthenticatorActivity.
getAuthToken()方法:AccountManager accountManager = AccountManager.get(activity);
accountManager.getAuthToken(
mAccount, MyAccountAuthenticator.AUTHTOKEN_TYPE_FULL_ACCESS, null,
activity, callback, handler);
Run Code Online (Sandbox Code Playgroud)
我创建了我的服务并定义了onBind().addAccount()不应该工作.
public IBinder onBind(Intent intent) {
return intent.getAction().equals(ACTION_AUTHENTICATOR_INTENT) ? new MyAccountAuthenticator(this).getIBinder() : null;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我addAccountExplicitly在MyAuthenticatorActivity应用程序获取用户的身份验证令牌后调用.
课堂上的片段MyAuthenticatorActivity extends AccountAuthenticatorActivity: …
我正在用Android应用程序替换EventBus模式RxJava.我有事件提醒任何感兴趣的各方我的缓存单例中的数据更新.每次调用Web服务时,都会更新数据,并通过发布的事件通知订阅者.
我在RxJava中有一些接近这个设置的东西AsyncSubject.观察者从主题中获得单个事件,但随后他们获得了一个onComplete事件并取消订阅.这首先加载UI,但是当需要刷新数据时,不会通知订阅者.我怎么告诉那些Subscribers人继续听取更多的onNext事件Subject呢?
我需要一个Subject会报告最新项目的.PublishSubject只在订阅后发出项目,因此它不能满足我的需求.我的订阅者在不同的时间(可能在第一个数据事件之后)开始观察,因此我需要主题发出最后观察的项目,然后保持流为后续项目打开.似乎AsyncSubject和PublishSubject的组合就是我所需要的.有没有办法用内置类来实现这一点,还是我需要创建自己的主题?
WebServiceObservable OR CacheObservable
^
|
AsyncSubject
^
|
/ \
/ \
/ \
UiObserver1 UiObserver2
Run Code Online (Sandbox Code Playgroud) 如何将Android截断的文本转换为省略号?
我有一个textview:
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:text="Um longo texto aqui de exemplo" />
Run Code Online (Sandbox Code Playgroud)
在设备上,此TextView显示如下:
"Um longo texto a..."
我如何获得其余文本?
我正在寻找像getRestOfTruncate()"qui de exemplo"这样的东西.
我试图使用Android UiAutomator测试Android Webview.据我了解文档,滚动WebvView会生成UI遍历事件,这些事件应该是可读的getUiDevice().getLastTraversedText().
但是,当我使用getUiDevice().pressDPadDown()滚动浏览Web视图时,getUiDevice().getLastTraversedText()保持返回null.
我错过了什么?
如果有人接到这个电话,我会非常感谢一个简短的代码示例.
我正在使用Retrofit和Dagger 2.我已经实现了一个OkHttp Interceptor来添加oauth令牌.如果没有oauth令牌或时间戳无效,我会在执行实际请求之前请求新的(通过Retrofit服务).
这会创建一个依赖循环,其中Retrofit服务需要,Interceptor但Interceptor也需要Retrofit服务(用于检索oauth令牌).
示例Interceptor(为了简化它总是通过请求令牌restService#refreshAccessToken):
@Override
public Response intercept(Chain chain) throws IOException {
Request originalRequest = chain.request();
Request.Builder requestBuilder = originalRequest.newBuilder();
String authHeader = "Bearer " + restService.refreshAccessToken();
requestBuilder.addHeader("Authorization", authHeader);
return chain.proceed(requestBuilder.build());
}
Run Code Online (Sandbox Code Playgroud) 编辑:如果我延伸FragmentActivity而不是ActionBarActivity我的布局再次显示(ActionBar当然没有).
设备ActionBar上的工作原理4.x,但在我的2.3设备上,我得到的是它下面ActionBar的空白屏幕.在Fragment似乎没有被获取添加到Activity.
的themes.xml
<style name="AppTheme" parent="AppBaseTheme">
<item name="actionBarStyle">@style/Widget.ActionBar</item>
</style>
Run Code Online (Sandbox Code Playgroud)
主题-v11.xml
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:actionBarStyle">@style/Widget.ActionBar</item>
</style>
Run Code Online (Sandbox Code Playgroud)
styles.xml
<style name="Widget.ActionBar" parent="@style/Widget.AppCompat.ActionBar">
<item name="android:background">@color/actionbar_background</item>
<item name="background">@color/actionbar_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)
活动 onCreate()
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
myFragment = new WallFragment();
fragmentTransaction.add(android.R.id.content,
myFragment, myFragment.FRAGMENT_TAG);
fragmentTransaction.commit();
Run Code Online (Sandbox Code Playgroud)
我正在使用Gradle将AppCompat ActionBar库包含在我的应用程序中.
compile 'com.android.support:appcompat-v7:18.0.+'
Run Code Online (Sandbox Code Playgroud) android android-fragments fragmenttransaction android-actionbar-compat
我正在尝试在列表中查询具有主键的所有模型的数据库.这是我的查询(idsList是一个包含整数的ArrayList):
new Select().from(PostModel.class)
.where(Condition.column(PostModel$Table.ID).in(0, idsList))
.async().queryList(listener);
Run Code Online (Sandbox Code Playgroud)
但Android Studio突出了其中的条件
"Cannot resolve method 'where(com.raizlabs.android.dbflow.sql.builder.Condition.In)"
Run Code Online (Sandbox Code Playgroud)
那么条件.在不被视为条件?如何在ArrayList中使用primaryKey查询所有模型?
我正在使用DBFlow 2.0.我也可以使用常规SQL查询字符串作为替代,但我不熟悉SQL,所以如果你可以为我的问题提供SQL查询字符串,那将是一种可能的解决方法.