我想在我的活动中永久隐藏导航栏(不是整个系统ui).现在我正在使用这段代码
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
Run Code Online (Sandbox Code Playgroud)
它隐藏了栏,但当用户触摸屏幕时,它再次显示.是否有任何方法可以永久隐藏它直到活动onStop();
我正在用Android媒体播放器对象构建视频播放器.我能够听到音频,但视频没有出现在surfaceView上.这是我的代码
public class PlayerActivity extends Activity implements SurfaceHolder.Callback {
String path;
private MediaPlayer mp;
private SurfaceView mPreview;
private SurfaceHolder holder;
boolean pausing = false;
public static String filepath;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_player);
getWindow().setFormat(PixelFormat.UNKNOWN);
mPreview = (SurfaceView)findViewById(R.id.surfaceView);
holder = mPreview.getHolder();
holder.setFixedSize(176, 144);
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mp = new MediaPlayer();
mp.setDisplay(holder);
try {
Intent intent = getIntent();
Uri fileuri = intent.getData();
filepath=fileuri.getPath();
} catch(Exception e) {}
try {
mp.setDataSource(filepath);
mp.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException …Run Code Online (Sandbox Code Playgroud) 我有 3 个 Nodejs 应用程序在带有 Nginx 反向代理的 GCP 计算引擎实例(2cpu、2GB 内存、ubuntu 20.04)上运行。其中之一是 socket.io 聊天服务器。socket.io 应用程序@socket.io/cluster-adapter使用所有可用的 CPU 核心。\n我按照本教程更新了 Linux 设置以获得最大连接数。这是命令的输出ulimit,
core file size (blocks, -c) 0\ndata seg size (kbytes, -d) unlimited\nscheduling priority (-e) 0\nfile size (blocks, -f) unlimited\npending signals (-i) 7856\nmax locked memory (kbytes, -l) 65536\nmax memory size (kbytes, -m) unlimited\nopen files (-n) 500000\npipe size (512 bytes, -p) 8\nPOSIX message queues (bytes, -q) 819200\nreal-time priority (-r) 0\nstack size (kbytes, -s) 8192\ncpu time (seconds, -t) unlimited\nmax …Run Code Online (Sandbox Code Playgroud) 我正在按照本教程创建我的第一个ffmpeg应用程序.我已成功构建共享库并编译项目而没有任何错误.但是当我在我的nexus 5上运行应用程序时,输出就是这个
这是本机代码
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>
#include <libavutil/pixfmt.h>
#include <stdio.h>
#include <pthread.h>
#include <jni.h>
#include <android/native_window.h>
#include <android/native_window_jni.h>
#define LOG_TAG "android-ffmpeg-tutorial02"
#define LOGI(...) __android_log_print(4, LOG_TAG, __VA_ARGS__);
#define LOGE(...) __android_log_print(6, LOG_TAG, __VA_ARGS__);
ANativeWindow* window;
char *videoFileName;
AVFormatContext *formatCtx = NULL;
int videoStream;
AVCodecContext *codecCtx = NULL;
AVFrame *decodedFrame = NULL;
AVFrame *frameRGBA = NULL;
jobject bitmap;
void* buffer;
struct SwsContext *sws_ctx = NULL;
int width;
int height;
int stop;
jint naInit(JNIEnv *pEnv, jobject pObj, jstring pFileName) …Run Code Online (Sandbox Code Playgroud) 我正在使用垂直StaggeredGridLayoutManager来显示一些缩略图.每行包含1英寸宽和150度高的卡片视图.我的问题是如何设置交错网格跨度计数以使用屏幕的可用物理宽度?
CardViewRow.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:orientation="vertical"
card_view:cardCornerRadius="0dp"
card_view:cardUseCompatPadding="true" >
<LinearLayout
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/card_selector"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/thumbnail"
android:layout_width="300dp"
android:layout_height="150dp"
android:scaleType="centerCrop"/>
<LinearLayout
android:weightSum="2"
android:padding="5dp"
android:layout_gravity="bottom"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#80000000">
<TextView
android:id="@+id/size_txt"
android:layout_weight="1"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/silver"
android:gravity="left"/>
<TextView
android:layout_weight="1"
android:gravity="right"
android:textColor="@color/silver"
android:id="@+id/time_txt"
android:textSize="12sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
<View
android:id="@+id/selector"
android:visibility="invisible"
android:background="#950096ff"
android:layout_width="match_parent"
android:layout_height="match_parent">
</View>
</FrameLayout>
<TextView
android:id="@+id/title_txt"
android:padding="8dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="5" />
</LinearLayout>
</android.support.v7.widget.CardView>
Run Code Online (Sandbox Code Playgroud)
目前我正在使用此代码.(致谢:mstrengis)
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int cardWidth …Run Code Online (Sandbox Code Playgroud) 如何使用mediastore获取存储在特定文件夹中的视频文件列表?目前我正在使用此代码
package com.example.videolisttest;
import android.app.Activity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Toast;
public class MainActivity extends Activity {
private Cursor videocursor;
private int video_column_index;
ListView videolist;
int count;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init_phone_video_grid();
}
private void init_phone_video_grid() {
System.gc();
String[] proj = { MediaStore.Video.Media._ID,
MediaStore.Video.Media.DATA,
MediaStore.Video.Media.DISPLAY_NAME,
MediaStore.Video.Media.SIZE };
videocursor = …Run Code Online (Sandbox Code Playgroud) 我正在使用 PeerJS 和 WebView 开发一个 Android 语音通话应用程序。我希望音频通过耳机播放。这是我的代码,
private fun initAudio(){
am = getSystemService(AUDIO_SERVICE) as AudioManager
volumeControlStream = AudioManager.STREAM_VOICE_CALL
am.mode = AudioManager.MODE_IN_COMMUNICATION
am.isSpeakerphoneOn = false//<= not working in android 12
}
private fun toggleSpeakerMode(){
am.isSpeakerphoneOn = !am.isSpeakerphoneOn // <= final value is always true in android 12
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在旧版本的 android 上运行良好,但在 android 12(模拟器)上运行不佳。
am.isSpeakerphoneOn在 android 12 中始终如此。我在这里做错了什么吗?或者是模拟器的bug?
在我的活动中,我为状态栏和导航栏设置了自定义颜色
\n <item name="android:statusBarColor" tools:targetApi="l">?attr/mainUIColor</item>\n <item name="android:navigationBarColor" tools:targetApi="l">?attr/mainUIColor</item>\nRun Code Online (Sandbox Code Playgroud)\n在这个活动中,我有一个 RecyclerView。我希望当用户打开软键盘时它滚动到底部。下面的代码片段完成了这项工作,
\nView rootView = findViewById(R.id.chat_root_view).getRootView();\n ViewCompat.setOnApplyWindowInsetsListener(rootView, (v, insets) -> {\n recyclerView.scrollToPosition(chatAdapter.getItemCount() - 1);\n return insets;\n });\nRun Code Online (Sandbox Code Playgroud)\n但是当调用这个函数时,It\xe2\x80\x99s 还会重置我在 theme.xml 中设置的状态栏和导航栏颜色。如何在不更改 systemBar 颜色的情况下滚动 recyclerView?
\n如何根据当前应用程序主题为按钮选择器设置不同的样式?
这是我的button_selector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<color android:color="@color/color_theme1"/>
</item>
<!-- pressed -->
<item android:drawable="@color/transparent"/>
<!-- default -->
</selector>
Run Code Online (Sandbox Code Playgroud) android ×9
video ×2
admob ×1
android-ndk ×1
button ×1
ffmpeg ×1
file ×1
fullscreen ×1
list ×1
media-player ×1
mediastore ×1
nginx ×1
scaling ×1
selector ×1
socket.io ×1
surfaceview ×1
themes ×1
websocket ×1
width ×1