在Android/Java中,是否有任何代码示例以编程方式捕获每秒具有良好帧数的计算机的屏幕截图并创建视频?
我想要一个教程或完整的源代码来做到这一点.我希望该程序能够在没有设备的情况下工作.
在这个游戏商店中有应用程序Screencast Video Recorder这样做.但是你需要ROOT设备让它工作,所以我知道它可以完成.
捕获android屏幕截图并以编程方式在非root设备上创建视频的最佳方法是什么?
我在我的应用程序中有listpreference,我想自定义它,我可以将主题设置为prefs活动如下:
<activity
android:name=".Prefs"
android:label="@string/app_name"
android:theme="@style/PreferencesTheme">
Run Code Online (Sandbox Code Playgroud)
偏好风格:
<?xml version="1.0" encoding="utf-8" ?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="PreferencesTheme" parent="android:Theme">
<item name="android:background">#FFDAB9</item>
<item name="android:textColor">@color/red_color</item>
<item name="android:textSize">20sp</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
上面的样式更改了ListPreference背景和ListPreference标题文本大小和文本颜色,但它不会以任何方式更改ListPreference摘要文本颜色或大小,
我尝试了这段代码,但它不起作用:
<item name="android:textColorSecondary">@color/red_color</item>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,谢谢
我想知道在以下方面实现以下哪些方面的性能和行为更好:
全屏.
屏幕上.
或两者都是一样的
第一:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
Run Code Online (Sandbox Code Playgroud)
要么
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)
可能这是一个简单的问题,但我还在学习android开发,
任何帮助将不胜感激,
谢谢.
我有PreferenceScreen包含许多CheckBox,我通过引用自定义布局自定义它:
<?xml version="1.0" encoding="utf-8" ?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:summary="checkbox one"
android:key="key_one"
android:layout="@layout/mylayout"
/>
<CheckBoxPreference
android:summary="checkbox two"
android:key="key_two"
android:layout="@layout/mylayout"
/>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)
mylayout.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="?android:attr/listPreferredItemHeight"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center"
android:minWidth="@dimen/preference_icon_minWidth"
android:orientation="horizontal">
<ImageView
android:id="@+android:id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="16dip"
android:layout_marginRight="8dip"
android:layout_marginTop="6dip"
android:layout_marginBottom="6dip"
android:layout_weight="1">
<TextView
android:id="@+android:id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:fadingEdge="horizontal" />
<TextView
android:id="@+android:id/summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@android:id/title"
android:layout_alignLeft="@android:id/title"
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="?android:attr/textColorSecondary"
android:maxLines="4" />
</RelativeLayout>
<LinearLayout
android:id="@+android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:minWidth="@dimen/preference_widget_width"
android:gravity="center"
android:orientation="vertical" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
每个东西运行正常我也在prefs活动中的复选框之间自定义divider:
ListView list = …Run Code Online (Sandbox Code Playgroud) 在我的程序中我试图在全屏播放视频但没有播放视频的宽高比,
在Android默认播放器中,当你按下它时它左上角有一个按钮,它将视频转换为全视图,而不会保留宽高比的视频失真:
如下图所示:

我尝试使用以下代码获取全屏视频:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<VideoView android:id="@+id/myvideoview"
android:layout_width="fill_parent"
android:layout_alignParentRight="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_height="fill_parent">
</VideoView>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
上面的代码导致全屏视频但不保持Aspest Ratio
请任何机构建议我如何获得全屏视频没有中断宽高比.
我的视频存储在App资源文件夹的原始文件夹中.
请提供完整的工作代码.
我在这里和谷歌搜索了很多,但我找不到我的目标,
另一篇文章在stackoverflow中找到了相同的问题但在此链接中没有正确的答案:
我使用videoview在我的应用程序中显示我的视频如下:
public class Video extends Activity {
private VideoView videoview;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
videoview = (VideoView) findViewById(R.id.count_videoview);
videoview.setVideoURI(Uri.parse("android.resource://" + getPackageName()
+"/"+R.raw.first_video));
videoview.setMediaController(new MediaController(this));
videoview.requestFocus();
videoview.start();
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢 .
我有一个应用程序开始Splash activity screen5秒然后打开Login activity screen然后你打开正确的用户和密码Menu activity (listActivity)然后每行点击打开MyCity activity.
更新:
我想要得到的是:你在我的应用程序中的任何地方,你出于任何原因离开我的应用程序,不仅是当你按下主页按钮而且还有FOR EXPLPLES:
您按主页按钮检查另一个应用程序然后想要返回到我的应用程序.
您有关于whatsup或电子邮件的通知显示新消息,您打开您的whatsup或打开电子邮件,然后返回到我的应用程序.
3-您离开手机一段时间后再想检查我的应用程序.
4-按下电源按钮关闭手机(锁定屏幕),然后打开锁定,想要返回我的应用程序.
我的意思是任何时候你出于任何原因离开我的应用程序,但没有按下后退按钮退出整个应用程序然后想要再次返回到我的应用程序必须打开登录屏幕再次输入您的用户名和密码.
我呼吁finish();Splash活动和登录活动.
我尝试过:android:clearTaskOnLaunch="true"在清单中的Login活动中,但它确实没有.
任何建议将被认真考虑,
请写完整的工作代码.
登录活动:
public class Login extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login);
Button b = (Button) findViewById(R.id.loginbutton);
b.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
EditText username = (EditText) findViewById(R.id.login);
EditText password = (EditText) findViewById(R.id.password);
if(username.getText().toString().length() > 0 …Run Code Online (Sandbox Code Playgroud) 我使用ViewPager来显示资源文件夹中的图像集,如果我的图像尺寸很小,那么每件事都可以正常工作,
但当我用高清图像替换它,我需要它在我的应用程序,它给了我这个错误:
java.lang.OutOfMemoryError:位图大小超过VM预算
注1:
我现在在我的代码中有5个图像用于测试,但最后我将有大约30个高清图像,
笔记2 :
我想知道为什么会发生这种情况,我是Android新手并且第一次使用viewpager类,之后我在另一个应用程序中使用了Gallery类,其中包含超过30个高清图像并且没有异常发生.
任何建议将不胜感激,非常感谢
我的代码:
logcat堆栈:
FATAL EXCEPTION: main
java.lang.OutOfMemoryError: bitmap size exceeds VM budget
at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:563)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:439)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:462)
at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:488)
at com.test.demo.MyPagerAdapter.<init>(MyPagerAdapter.java:42)
at com.test.demo.MainActivity.onCreate(MainActivity.java:15)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
主要活动
public class MainActivity extends Activity {
private ViewPager mMyPager;
private MyPagerAdapter mMyPagerAdapter; …Run Code Online (Sandbox Code Playgroud) 我正在开发文本到语音应用程序,我想将土耳其语设置为这样:
tts.setLanguage(Locale.TR);
Run Code Online (Sandbox Code Playgroud)
但这在android中不可用,这种添加方式是错误的还是有不同的方法将土耳其语添加到文本到语音中。
任何帮助和建议将不胜感激
文本转语音代码:
public class AndroidTextToSpeechActivity extends Activity implements
TextToSpeech.OnInitListener {
/** Called when the activity is first created. */
private TextToSpeech tts;
private Button btnSpeak;
private EditText txtText;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tts = new TextToSpeech(this, this);
btnSpeak = (Button) findViewById(R.id.btnSpeak);
txtText = (EditText) findViewById(R.id.txtText);
// button on click event
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
speakOut();}
});}
@Override
public void onDestroy() {
// Don't forget to shutdown!
if (tts …Run Code Online (Sandbox Code Playgroud) 我的应用程序从带有音乐的初始屏幕开始,我使用了sharedpreference来停止音乐,因此下次您打开仍没有音乐的应用程序初始屏幕时。
即时通讯试图获得具有三个独立的不同复选框功能的首选项屏幕,并且如果您选中一个复选框,则无法选中另外两个,如下所示:
第一个复选框: 启动带有启动屏幕和音乐的应用程序(通过以下代码实现),
第二个复选框:启动时没有启动屏幕且没有音乐的应用(通过以下代码实现),
第三个复选框: 启动没有启动屏幕和音乐的应用程序(未实现)。
任何帮助将不胜感激,谢谢
代码 :
飞溅:
public class Splash extends Activity{
MediaPlayer ourSong;
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
ourSong = MediaPlayer.create(Splash.this, R.raw.splashsound);
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences
(getBaseContext());
boolean music = getPrefs.getBoolean("checkbox", true);
if (music == true)
ourSong.start();
Thread timer = new Thread(){
public void run(){
try{
sleep(1000); }
catch (InterruptedException e){
e.printStackTrace(); }
finally{
Intent openMainActivity = new Intent("com.test.demo.MENU");
startActivity(openMainActivity); }}
};
timer.start(); …Run Code Online (Sandbox Code Playgroud) 我的应用程序启动取决于用户偏好和三个不同的复选框:
1-启动没有启动和音乐的应用程序。
2- 启动只有飞溅的应用程序。
3-启动带有spalsh和音乐的应用程序。
使用下面的代码,它的工作完美无缺。
但仍有两点需要实现:
首先 只应选中一个复选框。
在您根据需要选中任何一个复选框后,第二次返回主活动,在这里您可以使用后退按钮或退出按钮退出应用程序,我的选项菜单中已有它,问题是使用后退按钮或退出按钮它不响应第一次点击,我必须点击两次才能退出应用程序。
但我无法实现,
任何帮助请将不胜感激。
public class Splash extends Activity{
MediaPlayer ourSong;
@Override
protected void onCreate(Bundle savedInstanceState) {
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
SharedPreferences getPrefs = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
boolean without_splash_screen = getPrefs.getBoolean("without_splash_screen", true);
if (without_splash_screen == true)
{
Intent intent = new Intent(Splash.this, MainActivity.class);
startActivity(intent);
}
boolean splash = getPrefs.getBoolean("splash", true);
if(splash == true) {
setContentView(R.layout.splash);
Thread timer = new Thread() …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中 有活动包含多个线性布局和分隔符,它以编程方式创建,运行正常,
但我必须复制线性布局和分隔线5次,除了两件事以外都是一样的:
1-每个线性布局都有不同的字符串.
2-第一分频器余量不同于其他分频器余量.
是否有更好的方法来做更干净和更短的代码.
任何帮助都感激不尽 .
public class Dreams extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Boolean customTitleSupported =
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.trip);
if (customTitleSupported) {
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.custom_title);
}
TextView tv = (TextView) findViewById(R.id.title);
tv.setTypeface(FontFactory.getOldEnglish(getBaseContext()));
tv.setText("Dreams");
LinearLayout ll = (LinearLayout)findViewById(R.id.linearLayout);
// add text view
TextView tv1 = new TextView(this);
tv1.setGravity(Gravity.RIGHT);
tv1.setTextSize(30);
tv1.setTypeface(FontFactory.getOldEnglish(getBaseContext()));
ll.addView(tv1);
tv1.setText(Html.fromHtml(getString(R.string.dreams)));
ImageView divider1 = new ImageView(this);
LinearLayout.LayoutParams lp1 =
new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 5);
lp1.setMargins(40, 0, 40, 0);
divider1.setLayoutParams(lp1);
divider1.setBackgroundColor(Color.RED);
ll.addView(divider1); …Run Code Online (Sandbox Code Playgroud)