导航:首页 > 操作系统 > windowsandroidvlc

windowsandroidvlc

发布时间:2022-11-25 11:37:34

A. 求vlc播放器 中文版软件

软件介绍:

vlc播放器中文版是一款操作简单的媒体播放器,它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流式协议,大多数的媒体文件都可以播放。

所需工具:点击下载 vlc播放器 中文版

软件特点

1、简单、快速、强大

1)vlc播放器中文版能播放任何内容 - 文件、光盘、摄像头、设备及流媒体

2)可播放大多数格式,无需安装编解码器包 - MPEG-2, MPEG-4, H.264, MKV, WebM, WMV, MP3...

3)可在所有平台运行 - Windows, linux, Mac OS X, Unix, iOS, android ...

4)vlc播放器中文版完全免费 - 无间谍软件,无广告,无跟踪用户的行为

2、自定义

1)添加外观

2)设计外观可采用 VLC 外观编辑器

3)安装扩展

3、vlc播放器中文版具有跨平台的特性,它有Linux、Microsoft Windows、Mac OS X、BeOS、BSD、Pocket PC及Solaris的版本。

4、与另一个着名播放器Mplayer(使用Gtk+库)不同的是,VLC使用了Qt库来编写Linux的用户操作界面。

5、在Windows,Linux以及某些平台,vlc播放器中文版提供了一个Mozilla扩充包,使得某些网站上附带的QuickTime及Windows Media多媒体文件,可以在非微软或苹果计算机的操作系统中,正常显示于Mozilla的浏览器下。

6、从版本0.8.2开始,VLC亦提供了一个ActiveX的扩充包,使用户可以在Internet Explorer下,正常显示某些网站上附带的QuickTime及Windows Media多媒体文件。

7、从1.0.5版本开始VLC的ActiveX的扩充包已经放弃js接口的调用。

8、vlc播放器中文版还有一个非常好的功能——支持播放某些没有下载完成的视频文件部份内容。

B. vlc-android要怎么用

做vlc-android移植的道友都应该知道,当编译完vlc-android 源码后EventManager.java
类中定义了许多事件,下面是源码一部分:

public class EventManager {/*

* Be sure to subscribe to events you need in the JNI too.

*///public static final int MediaMetaChanged = 0;

//public static final int MediaSubItemAdded = 1;

//public static final int MediaDurationChanged = 2;

//public static final int MediaParsedChanged = 3;

//public static final int MediaFreed = 4;

//public static final int MediaStateChanged = 5;//public static final int MediaPlayerMediaChanged = 0x100;

//public static final int MediaPlayerNothingSpecial = 0x101;

//public static final int MediaPlayerOpening = 0x102;

//public static final int MediaPlayerBuffering = 0x103;

public static final int MediaPlayerPlaying = 0x104;

public static final int MediaPlayerPaused = 0x105;

public static final int MediaPlayerStopped = 0x106;......

}

可是对于这些事件有很多都被注释掉了,当我们需要被注释掉的事件时,就算把注释拿掉,再调用mEventManager.addHandler(EventManager.getInstance())添加事件之后,也不会在定义的mEventHandler
的handleMessage()中监听到,下面为一个mEventHandler定义的demo:

[java] view plain

private final VideoEventHandler mEventHandler = new VideoEventHandler(this);

private class VideoEventHandler extends WeakHandler<DtvPlayer>{

public VideoEventHandler(DtvPlayer owner) {

super(owner);

}

@Override

public void handleMessage(Message msg) {

DtvPlayer activity = getOwner();

if(activity == null) return;

switch (msg.getData().getInt("event")) {

case EventManager.MediaPlayerBuffering:

Log.d(TAG, "MediaPlayerBuffering");

break;

case EventManager.MediaPlayerEncounteredError:

Log.d(TAG, "MediaPlayerEncounteredError");

break;

......

default:

Log.e(TAG, String.format("Event not handled (0x%x)", msg.getData().getInt("event")));

break;

}

super.handleMessage(msg);

}

}

那么如何才能够在mEventHandler中监听到我们需要的事件呢,下面将进入主题。

在libvlcjni.c中有一个静态常量,其中指定了我们目前需要获取哪些事件:

[html] view plain

static const libvlc_event_type_t mp_events[] = {

libvlc_MediaPlayerPlaying,

libvlc_MediaPlayerPaused,

libvlc_MediaPlayerEndReached,

libvlc_MediaPlayerStopped,

libvlc_MediaPlayerVout,

libvlc_MediaPlayerPositionChanged

};

你可以将自己需要的事件添加在里面,然后将EventManager中响应的事件注释拿掉,之后重新编译源码就可以再mEventHandler中获取你刚添加的事件了。

(例如:你要想获取MediaPlayerEncounteredError事件,先将libvlc_MediaPlayerEncounteredError添加在mp_events[]静态常量中(注意,这里前面多了libvlc_),然后把EventManager中的public
static final int MediaPlayerEncounteredError =
0x10a;注释拿掉,重新编译源码之后就可以在你得mEventHandler
的handleMessage()中获取到EventManger.MediaPlayerEncounteredError事件)。

在vlc-android/vlc/lib/event.c中定义了所有事件:

[cpp] view plain

#define DEF( a ) { libvlc_##a, #a, },typedef struct

{

int type;

const char name[40];

} event_name_t;static const event_name_t event_list[] = {

DEF(MediaMetaChanged)

DEF(MediaSubItemAdded)

DEF(MediaDurationChanged)

DEF(MediaParsedChanged)

DEF(MediaFreed)

DEF(MediaStateChanged)DEF(MediaPlayerMediaChanged)

DEF(MediaPlayerNothingSpecial)

DEF(MediaPlayerOpening)

DEF(MediaPlayerBuffering)

DEF(MediaPlayerPlaying)

DEF(MediaPlayerPaused)

DEF(MediaPlayerStopped)

DEF(MediaPlayerForward)

DEF(MediaPlayerBackward)

DEF(MediaPlayerEndReached)

DEF(MediaPlayerEncounteredError)

DEF(MediaPlayerTimeChanged)

DEF(MediaPlayerPositionChanged)

DEF(MediaPlayerSeekableChanged)

DEF(MediaPlayerPausableChanged)

DEF(MediaPlayerTitleChanged)

DEF(MediaPlayerSnapshotTaken)

DEF(MediaPlayerLengthChanged)

DEF(MediaPlayerVout)DEF(MediaListItemAdded)

DEF(MediaListWillAddItem)

DEF(MediaListItemDeleted)

DEF(MediaListWillDeleteItem)DEF(MediaListViewItemAdded)

DEF(MediaListViewWillAddItem)

DEF(MediaListViewItemDeleted)

DEF(MediaListViewWillDeleteItem)DEF(MediaListPlayerPlayed)

DEF(MediaListPlayerNextItemSet)

DEF(MediaListPlayerStopped)DEF(MediaDiscovererStarted)

DEF(MediaDiscovererEnded)DEF(VlmMediaAdded)

DEF(VlmMediaRemoved)

DEF(VlmMediaChanged)

DEF(VlmMediaInstanceStarted)

DEF(VlmMediaInstanceStopped)

DEF(VlmMediaInstanceStatusInit)

DEF(VlmMediaInstanceStatusOpening)

DEF(VlmMediaInstanceStatusPlaying)

DEF(VlmMediaInstanceStatusPause)

DEF(VlmMediaInstanceStatusEnd)

DEF(VlmMediaInstanceStatusError)

};

#undef DEF

其中DEF()将MediaPlayerEncounteredError定义为libvlc_MediaPlayerEncounteredError,当本地代码产生MediaPlayerEncounteredError事件时会将libvlc_MediaPlayerEncounteredError传递给jni,与此同时jni又会传递给java层。不管是本地libvlc_MediaPlayerEncounteredError还是java层MediaPlayerEncounteredError,对于同一个事件被定义的值都是相同的,传输的是同一个消息值。本地代码定义在vlc-android/vlc/include/libvlc_events.h,
java代码定义在EventManager.java中。

C. 播放器排行榜前十名

播放器排行榜前十名:

1、PotPlayer

视频播放器排行榜上PotPlayer基本都会上榜,是无数人心中最好用的播放器,它是一款多格式视频播放工具,拥有强大的内置解码器用于解码播放,支持帧定位,几乎可以播放所有格式的视频,解码功能很出色,启动速度和播放速度都非常快,并且无需额外的转码和设置,同时还可以加载直播源,支持自定义皮肤。它还支持BD和MKV等大视频流畅播放,看高清大片无任何问题。

2、VLC

好用的视频播放器有哪些堪称万能?小编提名VLC。VLC多媒体播放器是一款免费开源的视频播放器,支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流式协议。它也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速网络连接下使用。

不仅占用电脑资源低,而且支持的文件格式也很全,并且基本上Windows、Mac、Linux、Android、iOS各大平台都有对应都设备。几乎兼容所有的音频和视频格式,并且还有多音轨、多字幕轨管理,还支持360度视频和3D环绕音效,功能相当齐全。

3、KMPlayer

十大视频播放器之一的KMPlayer也非常受欢迎,这是一款全能视频播放器软件,页面设计比较简洁,功能上支持多种格式视频的直接播放,而且它还支持4K、8K视频的播放,播放视频的时候还有VR模式可以选择,无须注册表支持直接调用Directshow滤镜。能够播放DVD与VCD、汇入多种格式的外挂字幕档、使用普及率最高的WinAMP音效外挂与支援超多种影片效果调整选项等。

4、MPC-HC

MPC-HC的全称是“Media Player Classic Home Cinema”,是Windows平台上一个非常轻量级的开源媒体播放器,体积及资源占用很小,响应迅速,能播放网上几乎全部主流的音频视频格式,兼容性非常好,软件对硬件配置要求也很低,低配置老电脑上也可以正常运行,可以一边看视频一边工作也非常稳定,而且100%免费,没有任何广告或后门。

5、MPV播放器

MPV播放器是一个基于MPlayer和mplayer2的开源极简全能播放器,它的界面非常简单,几乎没有完整的UI,只有简单的视频播放按钮,但是功能却很强大,支持播放各种格式的视频文件,对字幕的支持的也很不错,同时MPV还支持windows、Linux和OSX,真正的跨平台,启动迅速,并且稳定不闪退。

6、mx player

如果你在寻找安卓手机视频播放器,那小编最推荐的就是mx player,它能够播放几乎每一个影片档案,并且具备多核心的译码能力来处理你的影片档案和字幕。MX Video Player是Android平台上的第一款能够支持多核译码功能额的媒体播放器软件,有多核译码功能,根据在双核Android装置上的测试结果表明,它能够取得比单核译码播放器高达70%的效能。

7、nPlayer

可在iPhone、iPad和安卓上流畅播放几乎所有主流格式的视频,可以直接在手机上播放各种MKV、MP4、MOV、AVI、WMV、ASF、FLV、OGV、RMVB等几乎所有视频格式。nPlayer还可以支持DTS/DTS-HD/DTS DTS Headphone:X、Dolby AC3/E-AC3音频编码以及Dolby移动环绕立体声,字幕管理系统也很好用,可以切换多声道字幕,支持多种字幕格式。

8、Kodi

可用于多种操作系统和硬件平台,配有软件10英尺用户界面,可用于电视机和遥控器。它允许用户播放和查看大多数流媒体,如来自网上的视频、音乐、播客和视频,以及来自本地和网络存储媒体的所有常见数字媒体文件。对字幕的支持更是堪称一绝,能够兼容特效字幕,支持在线字幕匹配,看外语片无需自己找字幕,全球无数开发者为Kodi制作了大量实用的插件。

9、MPC-be

MPC-be是从MPC衍生来的播放器,这款免费开源的软件同样非常实用,低内存占用+高速打开播放,并且在界面外观上更胜一筹。由于Media Player Classic是开源软件,所以任何人都可以基于它的源代码进行修改,自由设置切换主题颜色,还可以隐藏掉整个界面边框和各种图标UI。具有播放控制,可以播放DVD,其他功能还包括的可能性在一个在线数据库中进行搜索字幕。

10、Avplayer

苹果手机视频播放器Avplayer也是款很强大的app,它可以播放任何格式的全功能影音播放器,适应于iPhone、iPod、iPad,大多数视频不需要另外的转换格式过程就可以直接从iPhone里看。用户还可以通过itunes或者WiFi传输文件到播放器内,也可以通过内置的下载客户端直接从Ftp/Samba/UPnP等服务器中打开影音文件,或者下载文件,还做了内置的相片浏览器。

D. Vlc 添加共享文件夹

经验:网络了一下午,关于vlc的,没找到一个靠谱、而且小白的。
以下干货:
vlc手机版本最新(我是iOS系统,vlc版本截止答题时最新版本3.1.2)
电脑,win10最新(截止答题时,无自动更新)
大前提:手机、电脑,连接的是同一局域网(Wi-Fi,自己家里的)
步骤:两大步(一步是在电脑操作,一步是在手机端操作)
一、在电脑上,要新建“用户”和“共享”
具体:
打开“计算机管理”(自行网络)
1、找到“本地用户和组”这一栏,点开,可以看见”用户”这一栏,鼠标右键,“新用户”。这时,就是要新建“用户”,用户名和密码,自己随便编,两个都填123也行。取消“下次登陆时须更改密码”,勾选“用户不能更改密码”、“密码永不过期”。创建后完成,关闭。
2、接着,找到“共享文件夹”这一栏,点开,可以看见“共享”这一栏,鼠标右键,“新建共享”。这时,就是要新建“共享”,在这里有界面引导,你所要做的,就只是确定你要共享的文件夹位置(比如文件夹里,有大量音频和视频文件。你想用vlc连电脑不就是为了这个吗…),接下来,只需要不断的点击下一步,完成。
二、电脑上操作已经完成了。接着手机端操作,连接电脑。
具体:
在vlc界面,左上角有个vlc自己的图标,点开,找到“本地网络”,在“本地网络”里,因为你手机和电脑是同一网络下,所以你可以在“文件服务器(SMB)”下面,看到你的电脑的名字。点开“你的电脑的名字”(比如你的电脑是surface pro,名字可能就是“surface pro”),在弹出的窗口里,左边是“SMB”,在“SMB”下,其他的不用管,只需要,只需要,只需要,把你新建的用户、密码填进去就可以了(比如假设的是123,那只用填123)。点击保存,然后连接
结果:你就可以像访问电脑一样访问文件夹了(仅限于你“分享”的文件)。
连接成功,可以直接用vlc看电脑上的电影。
提醒:分享的文件夹,最好不要有太多其他的“非视频、音频文件”,不然好像会一直显示不出来。

E. vlc for android 源码能不能在windows环境下编译

1. 准备编译环境

基本上按照这篇wiki的介绍就足够了,为了顺利完成编译,建议首先保证相关的软件或者依赖库都已经下载好了,我再强调一下几个重点注意事项。

(1) Android SDK:必须使用SDK Platform Android 5.0, API 21,因为VLC-for-android用到了Android 5.0 的一些API。

(2) 最好通过apt-get install 把下面这些依赖的软件都安装一遍,或更新到最新版

git,apache-ant (or ant), autoconf, automake, autopoint, cmake,
gawk (or nawk), gcc, g++, libtool, m4, patch, pkg-config, ragel,
subversion, unzip.

2. 下载源码包

直接通过git下载VLC-for-android最新的源码即可:

git clone git://git.videolan.org/vlc-ports/android.git

3. 编译VLC源码和VLC Android工程

(1) 配置编译环境变量

具体参考wiki的介绍,你可以写个shell脚本来执行,避免每次编译都要配置,下面是我的环境变量,可以根据你的路径修改:

#! /bin/sh

export ANDROID_SDK=/opt/android/sdk/

export ANDROID_NDK=/opt/android/android-ndk-r10/

export ANT_DIR=/opt/android/ant/

export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools:$ANT_DIR

export ANDROID_ABI=armeabi-v7a

(2) 执行编译

sh compile.sh

VLC不愧是使用这么广泛的播放器,它的编译脚本写得非常强大和智能,直接通过执行compile.sh,它会自动check所有的依赖,并通过网络去下载缺失的库。

首先,它会下载vlc的源码,并存放在当前目录下。然后去下载依赖的第三方库文件。

当然,由于GFW的存在,有的时候下载会失败,这个时候,就需要你手动去Google搜索它正在下载的依赖文件,手动下载好了之后放到 vlc/contrib/tarballs目录下,然后再回到命令行重新执行 sh compile.sh

它依赖的全部第三方库文件如图所示:

(3) 编译问题

编译过程还算顺利,只出现过一个大问题,如下:

google/protobuf/unittest.proto:853:21: Missing field number.

google/protobuf/unittest.proto:862:1: Reached end of input in message definition (missing '}').

make[3]: *** [unittest_proto_middleman] Error 1

网上也搜不到解决方案,我看了下GitHub上Protobuf的Readme,然后下载了最新的protobuf放到vlc/contrib
/tarballs/contrib-android-arm-linux-androideabi/protobuf目录下,执行.
/configure --disable-shared,再编译,没想到就直接过了。

4. 加载VLC-For-Android的Java工程

编译通过后,就可以直接在vlc-android/bin目录下看到debug版的apk了,下面简单说说在Eclipse中加载vlc-android的整个工程。

打开Eclipse,选择Import,把vlc-for-android目录下所有的工程到导入到Eclipse中(我去掉了TV工程),如图所
示,有5个必须的工程,其中,VLC是主工程,其他四个都是Lib工程。没有什么意外的话,直接运行VLC工程,就可以在Android手机上看到VLC
播放器应用了!

F. vlc-android要怎么用

VLC Media Player (VideoLAN) 为 Windows、Linux、OS X、Android、iOS、Windows Phone 等平台提供一个视频播放器、解码器。它可以播放来自网络、摄像头、磁盘、光驱的文件,支持包括MPEG 1/2/4, H264, VC-1, DivX, WMV, Vorbis, AC3, AAC等格式的解码。
vlc-android是开源播放器,可以移植到项目里,对码流进行解码,播放等等

G. 最好的播放器十大排名

最好的播放器十大排名:GOM 播放器、 VideoLAN VLC 媒体播放器、 SMPlayer、Pot Player、Media Player Classic-家庭影院、MediaMonkey、5K播放器、KMPlayer、科迪、DivX。

1、GOM 播放器

GOM Player 支持多种格式,能够在 PC 上查找编解码器、损坏的文件和下载的文件。它还可以帮助添加字幕、语言、字幕同步控件和屏幕捕获。

10、DivX

DivX 是一款屡获殊荣的视频播放器,用于创建、播放和投射 DivX、AVI、MKV 和 HVAC 格式高达 4K 的视频。使用更少 CPU 和内存的轻量级应用程序提供了多个组件;转换器、播放器、Web 播放器、DivX To Go、媒体服务器、DivX 安装程序系统和 DivX 控制面板。

H. 手机本地视频播放器哪个好用

手机本地视频播放器有以下几个:

1、MX播放器:

MXPlayer以超强的解码性能以及兼容性闻名,对字幕的支持能够兼容特效字幕,支持在线字幕匹配,看外语片无需自己找字幕。

该软件界面风格现在是Material Design设计,MXPlayer是一款多核心解码影片播放器,根据在多核心设备上的测试,它比单核心解码效能提高将近70%。

2、VLC播放器:

VLC 也是一款老牌、开源的播放器,推出了包括 Windows 、Mac OS X、Linux 和 iOS 的设备,直到 2012 年 VLC 的团队才开始着手测试版的开发,一直到 2014 年其实都是测试版本。VLC和MX Player 不同的是,它没有插件,所有的功能全部是通过一个应用来实现的。

3、KMPlayer:

KMPlayer 是一款来自韩国的影音播放器,KMPlayer是一套将网络上所有能见得到的解码程式(Codec)全部收集于一身的影音播放软件。

此外,KMPlayer还能够播放DVD与VCD、汇入多种格式的外挂字幕档、使用普及率最高的WinAMP音效外挂与支援超多种影片效果调整选项等。

4、BSPlayer:

BSPlayer持硬件加速和多核心解码。同样也支持市面上主流的播放格式和字幕格式。但这些却不是 BSPlayer 最大的亮点。它会自动在网络中搜寻匹配的字幕然后告诉用户。除此之外,BSPlayer 的特性还包括可以直接从未解压压缩文件中播放媒体文件和直接播放网络文件。

5、MoboPlayer:

一款Android平台视频播放器,支持几乎所有的视频格式和加载字幕,并且能通过高度优化的核心解码器在手机上流畅播放各种高清视频。MoboPlayer是Android Market电子市场上下载量第一的视频播放器,被称为“Android平台的万能播放器”。

I. vlc-android要怎么用

一.认识android的架构
Android其本质就是在标准的Linux系统上增加了Java虚拟机Dalvik,并在Dalvik虚拟机上搭建了一个JAVA的application framework,所有的应用程序都是基于JAVA的application framework之上。
android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。

二.搭建环境
搭建开发环境
对国内的开发者来说最痛苦的是无法去访问android开发网站。为了更好的认识世界,对程序员来说,会翻墙也是的一门技术,带你去领略墙外的世界,好了,不废话了, 国内开发者访问(androiddevtools) 上面已经有了所有你要的资源,同时可以下载到我们的主角framework

但是这样的搭建只能去阅读源代码,我们无法去更进一步去实现自己的rom,我们看到锤子的系统在早期的开放rom是自己从新实现了framework的代码,现在看起来他成功了,所以我们还要去搭建android系统的源码编译环境。

搭建源码编译环境
http://www.cnblogs.com/bluestorm/p/4419135.html
https://source.android.com/source/downloading.html(这里详细的介绍了如何下载编译)
三.开始主题

在一开始写c程序的时候都有一个运行的入口,比如
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;

//这里的main就是应用的入口
int main(int argc, const char * argv[]){
return 0;
}

在计算机网络原理中我们用socket实现一个服务器端,不断的接听客户端的访问,而且他的代码是这样实现的:
#include <winsock2.h>
#pragma comment(lib, "WS2_32.lib")

#include <stdio.h>
void main()
{
WORD wVersionRequested;//版本号
WSADATA wsaData;
int err;

wVersionRequested = MAKEWORD(2, 2);//2.2版本的套接字
//加载套接字库,如果失败返回
err = WSAStartup(wVersionRequested, &wsaData);
if (err != 0)
{
return;
}

//判断高低字节是不是2,如果不是2.2的版本则退出
if (LOBYTE(wsaData.wVersion) != 2 ||

HIBYTE(wsaData.wVersion) != 2)

{
return;
}

//创建流式套接字,基于TCP(SOCK_STREAM)

SOCKET socSrv = socket(AF_INET, SOCK_STREAM, 0);

//Socket地址结构体的创建

SOCKADDR_IN addrSrv;

addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//转换Unsigned long型为网络字节序格
addrSrv.sin_family = AF_INET;//指定地址簇
addrSrv.sin_port = htons(6000);
//指定端口号,除sin_family参数外,其它参数都是网络字节序,因此需要转换

//将套接字绑定到一个端口号和本地地址上
bind(socSrv, (SOCKADDR*)&addrSrv, sizeof(SOCKADDR));//必须用sizeof,strlen不行

listen(socSrv, 5);

SOCKADDR_IN addrClient;//字义用来接收客户端Socket的结构体

int len = sizeof(SOCKADDR);//初始化参数,这个参数必须进行初始化,sizeof

//循环等待接受客户端发送请求

while (1)
{
//等待客户请求到来;当请求到来后,接受连接请求,

//返回一个新的对应于此次连接的套接字(accept)。
//此时程序在此发生阻塞

SOCKET sockConn = accept(socSrv, (SOCKADDR*)&addrClient, &len);

char sendBuf[100];

sprintf(sendBuf, "Welcome %s to JoyChou",

inet_ntoa(addrClient.sin_addr));//格式化输出

//用返回的套接字和客户端进行通信

send(sockConn, sendBuf, strlen(sendBuf)+1, 0);//多发送一个字节

//接收数据

char recvBuf[100];

recv(sockConn, recvBuf, 100, 0);

printf("%s\\n", recvBuf);
closesocket(sockConn);

}
}

他采用了一个while死循环去监听客户端的请求。
在一遍啰嗦之后,主角终于闪亮的登场了。

先上源代码
public final class ActivityThread {

public static void main(String[] args) {
SamplingProfilerIntegration.start();

CloseGuard.setEnabled(false);

Environment.initForCurrentUser();

EventLogger.setReporter(new EventLoggingReporter());

Security.addProvider(new AndroidKeyStoreProvider());

final File configDir = Environment.getUserConfigDirectory(UserHandle.myUserId());
TrustedCertificateStore.setDefaultUserDirectory(configDir);

Process.setArgV0("<pre-initialized>");

Looper.prepareMainLooper();

//从中可以看到为app开辟了一个线程进入了looper之中

ActivityThread thread = new ActivityThread();
thread.attach(false);

if (sMainThreadHandler == null) {
sMainThreadHandler = thread.getHandler();
}

AsyncTask.init();

if (false) {
Looper.myLooper().setMessageLogging(new
LogPrinter(Log.DEBUG, "ActivityThread"));
}

Looper.loop();

throw new RuntimeException("Main thread loop unexpectedly exited");
}

}

看到源码失望了,没有一个while循环啊,其实用了他方法实现
//用一个looper的机制循环监听响应
Looper.prepareMainLooper();

Looper.loop();

进一步深入代码
public static void loop() {
final Looper me = myLooper();
if (me == null) {
throw new RuntimeException("No Looper; Looper.prepare() wasn't called on this thread.");
}
final MessageQueue queue = me.mQueue;

Binder.clearCallingIdentity();
final long ident = Binder.clearCallingIdentity();

// 在这里看到了一个循环监听消息

for (;;) {
Message msg = queue.next(); // might block
if (msg == null) {
// No message indicates that the message queue is quitting.
return;
}

Printer logging = me.mLogging;
if (logging != null) {
logging.println(">>>>> Dispatching to " + msg.target + " " +
msg.callback + ": " + msg.what);
}

msg.target.dispatchMessage(msg);

if (logging != null) {
logging.println("<<<<< Finished to " + msg.target + " " + msg.callback);
}

// Make sure that ring the course of dispatching the
// identity of the thread wasn't corrupted.
final long newIdent = Binder.clearCallingIdentity();
if (ident != newIdent) {
Log.wtf(TAG, "Thread identity changed from 0x"
+ Long.toHexString(ident) + " to 0x"
+ Long.toHexString(newIdent) + " while dispatching to "
+ msg.target.getClass().getName() + " "
+ msg.callback + " what=" + msg.what);
}

msg.recycleUnchecked();
}
}

J. 没有编译VLC Android配方为目标问题,怎么解决

一:安装androidSDK,NDK,JDK三个工具,SDK是android系统用的,有些SDK还包含了eclipse,NDK是用来编译C/C++代码的,这样使得android应用程序可能通过java来调用c/c++程序、JDK不用说,是java运行必须的环境。二:根据第一步解压的三个工具,配置这三个工具的环境变量(PATH),方法很多,可以修改~/.bashrc/etc/profile等等,这一步一定要正确,否则系统会找不到这三个工具,后面的编译会用到这几个工具,当然也就会出错了,因为系统默认不知道这几个程序的位置,这跟windows下的环境变量一个道理。为了验证环境变量是否配置正确,可以到别的目录下运行这几个程序,比如到根目录下看能否运行ndk-buildadb等程序,或者echo$PATH打印一下当前的环境变量并验证。

阅读全文

与windowsandroidvlc相关的资料

热点内容
dvd光盘存储汉子算法 浏览:757
苹果邮件无法连接服务器地址 浏览:962
phpffmpeg转码 浏览:671
长沙好玩的解压项目 浏览:144
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:484
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:381
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:349
风翼app为什么进不去了 浏览:778
im4java压缩图片 浏览:362
数据查询网站源码 浏览:150
伊克塞尔文档怎么进行加密 浏览:892
app转账是什么 浏览:163