我刚刚将Firebase添加到我的应用程序中,并想要使用Crash控制服务和Google Analytics.一切都很好,直到我从主页按钮关闭我的应用程序,然后我再次访问它.在那之后,我的应用程序完全冻结,任何响应,任何错误,我可以从我的logcat获得的唯一日志是:
01-01 15:55:40.600 1236 1262 W BroadcastQueue: Timeout of broadcast BroadcastRecord{fb70722 u0 com.google.firebase.INSTANCE_ID_EVENT} - receiver=android.os.BinderProxy@b6695b3, started 60009ms ago
01-01 15:55:40.600 1236 1262 W BroadcastQueue: Receiver during timeout: ResolveInfo{7bc7770 com.bq.camerabq/com.google.firebase.iid.FirebaseInstanceIdInternalReceiver m=0x0}
01-01 15:55:40.647 1236 1262 I ActivityManager: Skipping duplicate ANR: ProcessRecord{ce79b34 8173:com.bq.camerabq/u0a96} Broadcast of Intent { act=com.google.firebase.INSTANCE_ID_EVENT flg=0x14 cmp=com.bq.camerabq/com.google.firebase.iid.FirebaseInstanceIdInternalReceiver (has extras) }
Run Code Online (Sandbox Code Playgroud)
我第一次启动应用程序时也出现此错误,但我在此帖中看到它总是发生,是Firebase常见错误(无法读取模块... Firebase):
01-01 16:18:33.155 2149 2149 D FirebaseApp: Initialized class com.google.firebase.auth.FirebaseAuth.
01-01 16:18:33.163 2149 2149 D FirebaseApp: Initialized class com.google.firebase.iid.FirebaseInstanceId.
01-01 16:18:33.167 2149 2186 E DynamiteModule: …Run Code Online (Sandbox Code Playgroud) android crash-reports android-lifecycle firebase android-gradle-plugin
我试图将我的列之间的间隔减小GridView到0,以使布局100%填充我的项目。此刻,我仍然在项目的顶部和项目之间有一些填充。左右两侧看起来像我想要的。
这是我的片段布局的代码:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/movies_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<GridView
android:id="@+id/moviesGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="@dimen/poster_width"
android:numColumns="auto_fit"
android:verticalSpacing="0dp"
android:stretchMode="columnWidth"
android:textAlignment="center" />
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
这是Activity_main布局:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="false">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include
android:id="@+id/toolbar"
layout="@layout/toolbar" />
<FrameLayout
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
</FrameLayout>
</LinearLayout>
<android.support.design.widget.NavigationView
android:id="@+id/navigationView"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#E8F5E9"
android:fitsSystemWindows="false"
app:itemTextColor="@android:color/secondary_text_light"
app:menu="@menu/settings_header">
</android.support.design.widget.NavigationView>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
最后,这是我的dimens.xml文件:
<resources>
<!-- Default screen margins, per the Android Design guidelines. -->
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用 android SpeechRecognizer 的应用程序。我用它来做一些简单的事情。我单击一个按钮,我的语音识别器开始监听,我从我所说的内容中得到了一些结果。
容易吧?好吧,我的问题是我需要使 SpeechRecognizer 更快。我的意思是,我单击按钮,说“Hello”,SpeechRecognizer 需要大约 3-4 秒的时间返回一个包含可能结果的数组。我的问题是:
是否可以使 SpeechRecognizer 返回结果更快?或者花更少的时间来关闭监听意图并开始处理它监听的内容?也许还有另一种方法可以做到这一点?哪个会有比这个更好的性能?
我在检查库时看到了这 3 个参数:
EXTRA_SPEECH_INPUT_MINIMUM_LENGTH_MILLIS:
我们停止听到语音后需要多长时间才能认为输入完成。
EXTRA_SPEECH_INPUT_COMPLETE_SILENCE_LENGTH_MILLIS
话语的最小长度。
EXTRA_SPEECH_INPUT_POSSIBLY_COMPLETE_SILENCE_LENGTH_MILLIS
在我们停止听到语音后认为输入可能完成所需的时间。
http://developer.android.com/intl/es/reference/android/speech/RecognizerIntent.html
我已经尝试了所有这些,但它不起作用,或者也许我没有正确使用它们。这是我的代码:
public class MainActivity extends Activity {
private static final String TIME_FORMAT = "%02d:%02d:%02d";
private final String TAG = "MainActivity";
private StartTimerButton mSpeakButton;
private CircleProgressBar mCountdownProgressBar;
private CountDownTimer mCountDownTimer;
private TextView mTimer;
private int mRunSeconds = 0;
private SpeechRecognizer mSpeechRecognizer;
private Intent mSpeechRecognizerIntent;
private boolean mIsListening = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRunSeconds …Run Code Online (Sandbox Code Playgroud) 我最近刚使用Redux,我想用它创建一个简单的应用程序.我已经使用自己的State,Reducer和Action实现了主结构.
但我想知道如何使用Firebase将"数据"部分添加到应用程序中.有了这个,我的意思是按照Redux的应用程序状态模式构建和外部化数据调用的最佳实践.我已经考虑过创建一个调用数据的控制器和调度操作,但是Firebase使用了很多回调,所以我找不到一个好的方法来管理它们.
在Redux模式之后,在Android应用程序中构建数据模型有哪些好的做法?
android firebase react-native firebase-realtime-database redux
我最近几天一直在与 Swift 上的泛型相关的一些问题作斗争,但我没有找到一种方法来弄清楚如何实现这一点:
class Store<S: State>,其中State有一个扩展 Equatable 的简单协议protocol State: Equatable。Logger,我想在其中存储一个数组Stores以跟踪它们的每个更改并将它们State与旧值进行比较,从而能够检查每次迭代中的更改。为此,我需要在我的记录器类中存储一个Any Kind of Store数组 。当我尝试使用 a 时出现问题val storeArray = [Store<Any>],它不起作用,因为 Any 不是一种Equatable类型,我需要它们来扩展Equatable或NSObject能够比较它们之间的状态。
可以在 Swift 中实现吗?或者找出另一种方法来比较 2 个项目而不用通用扩展Equatable协议?
如果您想检查实现:
状态 :
protocol State: Equatable {
}
Run Code Online (Sandbox Code Playgroud)
店铺 :
class Store<S: State> {
private var _initialState: S
private var _state: S
private var processor = PublishSubject<S>()
init(initialState: …Run Code Online (Sandbox Code Playgroud) 我正在尝试在相机应用中为白平衡和温度颜色设置自定义值.我正在使用camera2 API,我正在尝试不同的方法来设置此值.我从excel文件中找到了一个方法,从白平衡值到100到100.000之间获得正确的RGB温度矩阵[红色,绿色,蓝色].
我将此方法附加到Seekbar并且其工作正常,当我尝试将某些东西聚焦时,我的问题出现,然后它变成粉红色.屏幕上任何一种灯都像粉红色的火炬.
我正在以这种方式设置值:
mPreviewRequestBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.COLOR_CORRECTION_MODE_TRANSFORM_MATRIX);
RggbChannelVector rggb = getTemperatureVector(seekBackSelectedTemperature);
mPreviewRequestBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, myRggbChannelVector);
Run Code Online (Sandbox Code Playgroud)
换句话说,我获取矩阵的方法是这样的:
public static RggbChannelVector getTemperatureVector (int WhiteBalanceValue){
float InsertTemperature = WhiteBalanceValue;
float temperature = InsertTemperature / 100;
float red;
float green;
float blue;
//Calculate red
if (temperature <= 66)
red = 255;
else {
red = temperature - 60;
red = (float) (329.698727446 * (Math.pow((double) red, -0.1332047592)));
if (red < 0)
red = 0;
if (red > 255)
red = 255;
}
//Calculate green
if (temperature <= 66) …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个WriteBatch来控制我的数据库中的一个动态引用.我的应用程序有一个简单的User-Follow-Post-Feed模型,我希望我的用户在他的Feed中查看他所关注的所有用户的帖子.在研究Firebase示例(作为Firefeed)和Stack Overflow上的大量帖子后,我正在做什么.
最佳的想法是保持一个路径(collection在这种情况下)我存储Ids我的用户应该在他的Feed中看到的帖子,这意味着保持对副本的控制并删除他关注/取消关注的所有用户的每个帖子.
我让我Cloud functions以原子的方式保持这一点,并且一切正常,但当我尝试进行大规模测试时,为用户添加超过5000个帖子试图跟随他(寻找Cloud function需要花多少时间)),我看到批次限制为500次操作.所以我所做的就是将我的5000个id分成多个小列表,每个列表执行一个批处理,永远不会超过500个限制.
但即使这样做,我仍然会得到一个错误I can't do more than 500 operations in a single commit,我不知道是否因为批次同时执行,或者为什么.我想也许我可以一个接一个地连接,并避免一次性执行它们.但我仍然有一些麻烦.这就是我提问的原因.
这是我的方法:
fun updateFeedAfterUserfollow(postIds: QuerySnapshot, userId: String) {
//If there is no posts from the followed user, return
if (postIds.isEmpty) return
val listOfPostsId = postIds.map { it.id }
val mapOfInfo = postIds.map { it.id to it.toObject(PublicUserData::class.java) }.toMap()
//Get User ref
val ref = firestore.collection(PRIVATE_USER_DATA).document(userId).collection(FEED)
//Split the list in …Run Code Online (Sandbox Code Playgroud) batch-processing nosql firebase google-cloud-functions google-cloud-firestore
我刚刚将应用程序更新为API 26,并尝试检索设备的序列号,并且看到Build.SERIALAPI 26弃用了该序列号。
我应该怎么用呢?
我正在尝试将相机项目更新到 Android N,因此我将旧的CameraCaptureSession移动到ReprocessableCaptureSession。我做到了并且工作正常,但是有了这个新功能,我可以CameraDevice.TEMPLATE_ZERO_SHUTTER_LAG在我的设备中使用模板,并且可以使用reprocessCaptureRequest重新处理帧。
这是我的问题出现的地方。因为我没有找到任何示例,而且我不太理解有关如何使用的小文档reprocessCaptureRequest:
每个重新处理 CaptureRequest 都会处理从 CameraCaptureSession 的输入 Surface 到重新处理捕获请求中包含的所有输出 Surface 的一个缓冲区。重新处理输入图像必须从同一相机设备捕获的一幅或多幅输出图像生成。应用程序可以通过queueInputImage(Image)向相机设备提供输入图像。应用程序必须使用这些输出图像之一的捕获结果来创建重新处理捕获请求,以便相机设备可以使用该信息来实现最佳的重新处理图像质量。对于仅支持 1 个输出 Surface 的相机设备,提交具有多个输出目标的重新处理 CaptureRequest 将导致 CaptureFailure。
我试图在google.sources中查看有关相机的 CTS 测试,但他们的做法与我相同。使用多个 imageReader,将TotalCaptureResult图片保存在LinkedBlockingQueue<TotalCaptureResult>. 后来只是打电话:
TotalCaptureResult totalCaptureResult = state.captureCallback.getTotalCaptureResult();
CaptureRequest.Builder reprocessCaptureRequest = cameraStore.state().cameraDevice.createReprocessCaptureRequest(totalCaptureResult);
reprocessCaptureRequest.addTarget(state.yuvImageReader.getSurface());
sessionStore.state().session.capture(reprocessCaptureRequest.build(), null, this.handlers.bg());
Run Code Online (Sandbox Code Playgroud)
但它总是抛出一个 RuntimeException:
java.lang.RuntimeException: Capture failed: Reason 0 in frame 170,
我只想知道哪种方法是使用 ReprocessableCaptureSession 的正确方法,因为我已经尝试了所有方法,但我不知道我做错了什么。
我刚刚为Firebase配置了第一个Cloud Functions,并在部署index.js文件后将所有更改上传到我的服务器.我正在尝试使用我的一个函数,这是一个简单的HTTP请求,用于在Firebase数据库中的表上创建字段:
const functions = require('firebase-functions');
exports.addMessage = functions.https.onRequest((req, res) => {
// Grab the text parameter.
const original = req.query.text;
// Push it into the Realtime Database then send a response
admin.database().ref('/messages').push({ original: original }).then(snapshot => {
// Redirect with 303 SEE OTHER to the URL of the pushed object in the Firebase console.
res.redirect(303, snapshot.ref);
});
});
Run Code Online (Sandbox Code Playgroud)
但是当我在我的浏览器上调用我的请求时,我在我的功能控制台上收到一条错误,上面写着admin is not defined:
有人知道导致这个错误的原因是什么?
非常感谢.
javascript firebase google-cloud-functions firebase-cloud-messaging
在最新的Firebase函数版本上,FirebaseDatabase触发器已更新,将其功能拆分为onCreate,onUpdate而onDelete不是始终使用onWrite并检查每次调用中是否已删除数据。
有人可以提供更多有关是否值得将当前FirebaseDatabase触发器迁移到新的拆分功能以及如何在应用程序中对其进行更新的信息。
javascript firebase firebase-realtime-database google-cloud-functions
在今年 FirebaseSummit 的演讲之后,我最近将我的云函数更新为 TypeScript。
我所有的代码看起来都很酷,但是我在尝试恢复 Firestore API 的类型时遇到了一些问题,例如QuerySnapshot,DocumentReference...
async function getEventsMadeByUser(userId: string): Promise<FirebaseFirestore.DocumentSnapshot[]> {
const eventsMadeByUserQuery = await instance.collection('PrivateUserData')
.doc(userId).collection(EVENTS)
.where('interactionUser', '==', userId).get();
return eventsMadeByUserQuery.docs;
}
Run Code Online (Sandbox Code Playgroud)
现在我的 IDE (WebStorm) 没有获取FirebaseFirestore. 这是我的package.json样子:
{
"name": "functions",
"description": "Cloud Functions for Firebase",
"dependencies": {
"firebase-admin": "^5.4.3",
"firebase-functions": "^0.7.2"
},
"devDependencies": {
"@types/express": "^4.0.37",
"typescript": "^2.3.2"
},
"scripts": {
"build": "tsc",
"watch": "tsc --watch",
"deploy": "tsc && firebase deploy --only functions"
},
"main": "build/index.js",
"private": true …Run Code Online (Sandbox Code Playgroud) node.js firebase typescript google-cloud-functions google-cloud-firestore
我已经在测试新的FirestoreAPI了,我在文档和update调用方面遇到了一些问题.
我正在尝试更新一个没有现有的文件,我收到了一个错误.显然这很好,因为文档说update如果DocumentReference不存在,调用将失败.但是,阅读官方文档,我看到下一段代码:
// Update the population, creating the document if it
// does not already exist.
db.collection("cities").document("Beijing").update(
new UpdateOptions().createIfMissing(),
"population",
21500000);
Run Code Online (Sandbox Code Playgroud)
我试图复制这个,但我找不到UpdateOptions电话.另外,检查这些的不同覆盖方法update不是这种调用的构造函数.
我正在使用11.4.2Firebase版本.知道发生了什么事吗?
android ×8
firebase ×7
camera ×2
javascript ×2
deprecated ×1
generics ×1
gridview ×1
image ×1
ios ×1
java ×1
node.js ×1
nosql ×1
padding ×1
performance ×1
react-native ×1
redux ×1
rgb ×1
swift ×1
types ×1
typescript ×1