屏幕各个Activity页面横竖屏切换执行onCreate方法
在功能清单文件的每个activity配置
<activity
android:name="com.atguigu.mobileplayer.video.VideoPlayerActivity"
android:configChanges="keyboardHidden|screenSize|orientation"
android:screenOrientation="landscape" />
解决安卓6.0以上版本不能读取外部存储权限的问题
/**
* 解决安卓6.0以上版本不能读取外部存储权限的问题
* @param activity
* @return
*/
public static boolean isGrantExternalRW(Activity activity) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && activity.checkSelfPermission(
Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
activity.requestPermissions(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, 1);
return false;
}
return true;
}
得到网络速度
private long lastTotalRxBytes = 0;
private long lastTimeStamp = 0;
/**
* 得到网络速度
* 每隔两秒调用一次
*
* @param context
* @return
*/
public String getNetSpeed(Context context)
{
String netSpeed = "0 kb/s";
long nowTotalRxBytes = TrafficStats.getUidRxBytes(context.getApplicationInfo().uid) == TrafficStats.UNSUPPORTED ? 0 : (TrafficStats.getTotalRxBytes() / 1024);//转为KB;
long nowTimeStamp = System.currentTimeMillis();
long speed = ((nowTotalRxBytes - lastTotalRxBytes) * 1000 / (nowTimeStamp - lastTimeStamp));//毫秒转换
lastTimeStamp = nowTimeStamp;
lastTotalRxBytes = nowTotalRxBytes;
netSpeed = String.valueOf(speed) + " kb/s";
return netSpeed;
}
判断是否是网络的资源
/**
* 判断是否是网络的资源
*
* @param uri
* @return
*/
public boolean isNetUri(String uri)
{
boolean reault = false;
if (uri != null)
{
if (uri.toLowerCase().startsWith("http") || uri.toLowerCase().startsWith("rtsp") || uri.toLowerCase().startsWith("mms"))
{
reault = true;
}
}
return reault;
}
把毫秒转换成:1:20:30这种形式
private StringBuilder mFormatBuilder;
private Formatter mFormatter;
/**
* 把毫秒转换成:1:20:30这里形式
*
* @param timeMs
* @return
*/
public String stringForTime(int timeMs)
{
int totalSeconds = timeMs / 1000;
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
int hours = totalSeconds / 3600;
mFormatBuilder.setLength(0);
if (hours > 0)
{
return mFormatter.format("%d:%02d:%02d", hours, minutes, seconds)
.toString();
}
else
{
return mFormatter.format("%02d:%02d", minutes, seconds).toString();
}
}
// 转换成字符串的时间
mFormatBuilder = new StringBuilder();
mFormatter = new Formatter(mFormatBuilder, Locale.getDefault());
得到系统时间
/**
* 得到系统时间
*
* @return
*/
private String getSysteTime()
{
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
return format.format(new Date());
}
17-手指在屏幕上下滑动实现声音大小变化
private float startY;
/**
* 滑动的区域
*/
private float touchRang;
/**
* 当前的音量
*/
private int mVol;
//接收事件,传递给手识别器
@Override
public boolean onTouchEvent(MotionEvent event)
{
//3.把事件传递给手势识别器
detector.onTouchEvent(event);
switch (event.getAction())
{
case MotionEvent.ACTION_DOWN://手指按下
//1.按下记录值
startY = event.getY();
mVol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
touchRang = Math.min(screenHeight, screenWidth);//screenHeight
handler.removeMessages(HIDE_MEDIACONTROLLER);
break;
case MotionEvent.ACTION_MOVE://手指移动
//2.移动的记录相关值
float endY = event.getY();
float distanceY = startY - endY;
//改变声音 = (滑动屏幕的距离: 总距离)*音量最大值
float delta = (distanceY / touchRang) * maxVoice;
//最终声音 = 原来的 + 改变声音;
int voice = (int) Math.min(Math.max(mVol + delta, 0), maxVoice);
if (delta != 0)
{
isMute = false;
updataVoice(voice, isMute);
}
// startY = event.getY();//不要加
break;
case MotionEvent.ACTION_UP://手指离开
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROLLER, 4000);
break;
}
return super.onTouchEvent(event);
}
18-监听按手机声音健改变声音
/**
* 监听物理健,实现声音的调节大小
*
* @param keyCode
* @param event
* @return
*/
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN)
{
currentVoice--;
updataVoice(currentVoice, false);
handler.removeMessages(HIDE_MEDIACONTROLLER);
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROLLER, 4000);
return true;
}
else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP)
{
currentVoice++;
updataVoice(currentVoice, false);
handler.removeMessages(HIDE_MEDIACONTROLLER);
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROLLER, 4000);
return true;
}
return super.onKeyDown(keyCode, event);
}
25.3-屏蔽系统播放器和Vitamio播放器切换的动画
<style name="noAnimation_Theme" parent="android:Theme">
<item name="android:windowAnimationStyle">@style/noAnimation</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
<style name="noAnimation">
<item name="android:activityOpenEnterAnimation">@null</item>
<item name="android:activityOpenExitAnimation">@null</item>
<item name="android:activityCloseEnterAnimation">@null</item>
<item name="android:activityCloseExitAnimation">@null</item>
<item name="android:taskOpenEnterAnimation">@null</item>
<item name="android:taskOpenExitAnimation">@null</item>
<item name="android:taskCloseEnterAnimation">@null</item>
<item name="android:taskCloseExitAnimation">@null</item>
<item name="android:taskToFrontEnterAnimation">@null</item>
<item name="android:taskToFrontExitAnimation">@null</item>
<item name="android:taskToBackEnterAnimation">@null</item>
<item name="android:taskToBackExitAnimation">@null</item>
</style>
使用样式:
<activity android:name=".videoplayer.VitamioVideoPlayerActivity"
android:screenOrientation="landscape"
android:configChanges="orientation|screenSize|smallestScreenSize|keyboard|keyboardHidden|navigation"
android:theme="@style/noAnimation_Theme"/>
滑动屏幕左边改变亮度滑动右边改变声音
参照代码:http://blog.csdn.net/piaozhiye/article/details/6544450
1.添加权限
<uses-permission Android:name="android.permission.VIBRATE" />
2.集成后的代码
private float startY;
private float startX;
private float touchRang;
private int mVol;
@Override
public boolean onTouchEvent(MotionEvent event) {
//3.把事件给手势识别器解析
detector.onTouchEvent(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//1.按下的时候记录初始值
startY = event.getY();
startX = event.getX();
touchRang = Math.min(screenHeight, screenWidth);//screenHeight
mVol = am.getStreamVolume(AudioManager.STREAM_MUSIC);
handler.removeMessages(HIDE_MEDIACONTROLLER);
break;
case MotionEvent.ACTION_MOVE:
//2.来到新的坐标
float endY = event.getY();
float endX = event.getX();
if (endX < screenWidth / 2) {
//左边屏幕-屏幕亮度调节
final double FLING_MIN_DISTANCE = 0.5;
final double FLING_MIN_VELOCITY = 0.5;
if (startY - endY > FLING_MIN_DISTANCE
&& Math.abs(endY - startY) > FLING_MIN_VELOCITY) {
setBrightness(20);
}
if (startY - endY < FLING_MIN_DISTANCE
&& Math.abs(endY - startY) > FLING_MIN_VELOCITY) {
setBrightness(-20);
}
} else {
//屏幕右边-声音调节
//3.计算偏移量
float distanceY = startY - endY;
//屏幕滑动的距离: 总距离 = 改变的声音: 最大音量
float changVolume = (distanceY / touchRang) * maxVolume;
//最终的声音= 原来的音量 + 改变的声音;
float volume = Math.min(Math.max(mVol + changVolume, 0), maxVolume);
if (changVolume != 0) {
updateVolumeProgress((int) volume);
}
}
break;
case MotionEvent.ACTION_UP:
handler.sendEmptyMessageDelayed(HIDE_MEDIACONTROLLER, 5000);
break;
}
return super.onTouchEvent(event);
}
网友评论