Android 播放电影时滑动屏幕调整屏幕亮度(转)

(转自:http://blog.csdn.net/piaozhiye/article/details/6544450)

发现有一些主流的播放器播放电影时可以通过滑动屏幕调整屏幕亮度,其实实现起来也很容易。 主要根据滑动的方向来设置屏幕亮度,以下这个demo实现向上滑动屏幕变亮,向下滑动则屏幕变暗。当的屏幕达到最亮或最暗(20%)的时候,设备会震动,代码简单,不多说。 同时设备震动需要有权限

<uses-permission android:name="android.permission.VIBRATE" />

  1 [java] view plaincopyprint?
  2 package org.piaozhiye.demo;
  3 import android.app.Activity;
  4 import android.os.Bundle;
  5 import android.os.Vibrator;
  6 import android.util.Log;
  7 import android.view.GestureDetector;
  8 import android.view.MotionEvent;
  9 import android.view.WindowManager;
 10 import android.widget.MediaController;
 11 import android.widget.VideoView;
 12 public class MainActivity extends Activity {
 13     private VideoView myVideoView;
 14     private String path = "/mnt/sdcard/video/Wonder Girls_Nobody(英文版).mp4";
 15     private String TAG = "MainActivity";
 16     private GestureDetector mGestureDetector;
 17     private Vibrator vibrator;
 18     /** Called when the activity is first created. */
 19     @Override
 20     public void onCreate(Bundle savedInstanceState) {
 21         super.onCreate(savedInstanceState);
 22         setContentView(R.layout.main);
 23         myVideoView = (VideoView) findViewById(R.id.myvideoview);
 24         myVideoView.setVideoPath(path);
 25         myVideoView.setMediaController(new MediaController(this));
 26         myVideoView.requestFocus();
 27         myVideoView.start();
 28     }
 29     /*
 30      *
 31      * 设置屏幕亮度 lp = 0 全暗 ,lp= -1,根据系统设置, lp = 1; 最亮
 32      */
 33     public void setBrightness(float brightness) {
 34         WindowManager.LayoutParams lp = getWindow().getAttributes();
 35         // if (lp.screenBrightness <= 0.1) {
 36         // return;
 37         // }
 38         lp.screenBrightness = lp.screenBrightness + brightness / 255.0f;
 39         if (lp.screenBrightness > 1) {
 40             lp.screenBrightness = 1;
 41             vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
 42             long[] pattern = { 10, 200 }; // OFF/ON/OFF/ON...
 43             vibrator.vibrate(pattern, -1);
 44         } else if (lp.screenBrightness < 0.2) {
 45             lp.screenBrightness = (float) 0.2;
 46             vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
 47             long[] pattern = { 10, 200 }; // OFF/ON/OFF/ON...
 48             vibrator.vibrate(pattern, -1);
 49         }
 50         Log.e(TAG, "lp.screenBrightness= " + lp.screenBrightness);
 51         getWindow().setAttributes(lp);
 52     }
 53     @Override
 54     protected void onResume() {
 55         mGestureDetector = new GestureDetector(
 56                 new GestureDetector.OnGestureListener() {
 57                     public boolean onSingleTapUp(MotionEvent e) {
 58                         return false;
 59                     }
 60                     public boolean onDown(MotionEvent e) {
 61                         return false;
 62                     }
 63                     public void onLongPress(MotionEvent e) {
 64                     }
 65                     public boolean onFling(MotionEvent e1, MotionEvent e2,
 66                             float velocityX, float velocityY) {
 67                         return true;
 68                     }
 69                     public boolean onScroll(MotionEvent e1, MotionEvent e2,
 70                             float distanceX, float distanceY) {
 71                         final double FLING_MIN_DISTANCE = 0.5;
 72                         final double FLING_MIN_VELOCITY = 0.5;
 73                         if (e1.getY() - e2.getY() > FLING_MIN_DISTANCE
 74                                 && Math.abs(distanceY) > FLING_MIN_VELOCITY) {
 75                             Log.e(TAG, "up");
 76                             setBrightness(20);
 77                         }
 78                         if (e1.getY() - e2.getY() < FLING_MIN_DISTANCE
 79                                 && Math.abs(distanceY) > FLING_MIN_VELOCITY) {
 80                             Log.e(TAG, "down");
 81                             setBrightness(-20);
 82                         }
 83                         return true;
 84                     }
 85                     public void onShowPress(MotionEvent e) {
 86                         // TODO Auto-generated method stub
 87                     }
 88                 });
 89         super.onResume();
 90     }
 91     public boolean onTouchEvent(MotionEvent event) {
 92         boolean result = mGestureDetector.onTouchEvent(event);
 93         if (!result) {
 94             if (event.getAction() == MotionEvent.ACTION_UP) {
 95                 // getVideoInfosfromPath(filePath);
 96             }
 97             result = super.onTouchEvent(event);
 98         }
 99         return result;
100     }
101     @Override
102     protected void onStop() {
103         if (null != vibrator) {
104             vibrator.cancel();
105         }
106         super.onStop();
107     }
108 }  

测试补充.XML;

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent" >
 5
 6     <VideoView
 7         android:id="@+id/myvideoview"
 8         android:layout_width="match_parent"
 9         android:layout_height="match_parent" />
10
11 </RelativeLayout>
时间: 2024-08-25 12:59:32

Android 播放电影时滑动屏幕调整屏幕亮度(转)的相关文章

Android播放音乐时跳动的屏谱demo

Android实现播放音频时的跳动频谱,并实现可以调节的均衡器. Main.java package com.wjq.audiofx; import android.app.Activity; import android.media.AudioManager; import android.media.MediaPlayer; import android.media.audiofx.Equalizer; import android.media.audiofx.Visualizer; imp

使用Vitamio打造自己的Android万能播放器(2)—— 手势控制亮度、音量、缩放

前言 本章继续完善播放相关播放器的核心功能,为后续扩展打好基础. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 系列 1.使用Vitamio打造自己的Android万能播放器(1)——准备 正文 一.实现目标 1.1 亮度控制 模仿VPlayer界面: 1.2 声音控制 模仿VPlayer界面: 1.3 画面缩放 根据下面API提供画面的拉伸.剪切.100%.全屏 二.Vitami

android 常见的解决(mdpi、hdpi 、xhdpi、xxhdpi )屏幕调整

查询到执行的system service后,就能够在dumpsys后面加上service的名字,查看指定的service信息. adb shell dumpsys activity adb shell dumpsys cpuinfo adb shell dumpsys battery adb shell dumpsys window(最后部分能够看到分辨率的信息)===== ------------------------------------------------- Android Dev

请教:Android正播放视频时的解码输出流如何获取?

============问题描述============ Android播放视频,经过解码器解码 获得数据流 再显示到屏幕上.请问这部分数据(解码器解码后的数据流)通过什么方法可以获取?  请教...  先谢谢啦 ============解决方案1============ 你是想录制视频? ============解决方案2============ 引用 3 楼 yu8fei 的回复: Quote: 引用 2 楼 sagittarius1988 的回复: 你是想录制视频? 不是,跟照相机录像机摄

用JAVA捕获屏幕、屏幕录像、播放

http://blog.csdn.net/njchenyi/article/details/447554 用JAVA捕获屏幕.屏幕录像.播放 标签: javaexceptionimageimportnullstring 2005-08-07 10:07 4739人阅读 评论(2) 收藏 举报  分类: JAVA(158)  版权声明:本文为博主原创文章,未经博主允许不得转载. //记录屏幕.类似录像 package com.wnetw.project.media; import java.awt

Android实战技巧之十:获得屏幕物理尺寸、密度及分辨率

大家帮忙喽! 博主参加2014博客之星活动,大家帮忙投票啦!猛击这里! 通过程序去了解硬件情况是一件十分有意思的事情.很早我就研究在WM6.5上获得屏幕物理尺寸,但一直没有成功.后来又想要在Android上有所突破,不过在今天之前得到的尺寸都不准确.虽然很多人认为没必要这么较真,因为貌似很多情况下用不到.不过我就当这是一件很有挑战性的事,一定要做到.对,就是这么任性. 源码中android.view包下的Display类提供了很多方法供程序员获得显示相关的信息,通过此类让我们开启了解设备屏幕之旅

Android RelativeLayout中实现控件平分屏幕

? 1 <!-- ? 1 RelativeLayout 达到平分效果 ? 1 --> ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <br><RelativeLayout     android:layout_width="fill_parent"     android:layout_height="wrap_content">     <View<br&g

Android多媒体-播放多媒体时的前台服务

众所周知,一般我们将播放的逻辑都放入service当中,这样就能实现在后台继续播放音乐的功能.后台service被系统回收的概率相对来说比较低,但是这种情况也确实存在. 前台服务是那些被认为用户知道的并且在内存低的时候不允许系统杀死的服务.前台服务必须给状态栏提供一个通知,他被放到了"正在进行中(Ongoing)"标题之下,这就意味着直到这个服务被终止或从前台删除通知才能被解除. 例如,一个播放音乐的音乐播放器服务应该被设置在前台运行,因为用户明确的知道它们的操作.状态栏中的通知可能指

内容不超过屏幕,footer固定在底部,超过时被撑出屏幕

内容不超过屏幕,footer固定在底部,超过时被撑出屏幕. 思路(推荐结合代码一起看,再动手): 1.主内容由.wrap包裹,设置最小高度为100%,是为了让.main的内容不超出屏幕时,footer可以固定在底部:设置高度auto,是为了当高度超过100%时,可以被.main撑开. 2.给footer设置margin-top:-80px;可以让footer保持在.wrap的底部,但不超出.wrap(80px是footer的高度). 3.给.main设置padding-bottom:80px;是