当前位置:文档之家› Android MediaScanner 详尽分析

Android MediaScanner 详尽分析

Android MediaScanner  详尽分析
Android MediaScanner  详尽分析

A n d r o i d Me d i a S c a n n e r详尽分析(2011-08-31 11:04:16)

转载▼标签:a n d r o i dm e d i as c a n e r源代码分析i t分类:A n d r o i d开发

M e d i a S c a n n e r分析

一MediaScannerService

多媒体扫描是从MediaScannerService开始的。这是一个单独的package。位于

packages/providers/MediaProvider:含以下java文件

l MediaProvider.java

l MediaScannerReceiver.java

l MediaScannerService.java

l MediaThumbRequest.java

分析这个目录的Android.mk文件,发现它运行的进程名字就是android.process.media。

application android:process=android.process.media

1.1M e d i a S c a n n e r R e c e i v e r

这个类从BroadcastReceiver中派生,用来接收任务的。

M e d i a S c a n n e r R e c e i v e r e x t e n d s B r o a d c a s t R e c e i v e r

在它重载的o n R e c i e v e函数内有以下几种走向:

i f(a c t i o n.e q u a l s(I n t e n t.A C T I O N_B O O T_C O M P L E T E D)){

//收到”启动完毕“广播后,扫描内部存储

s c a n(c o n t e x t,M e d i a P r o v i d e r.I N T E R N A L_V O L U M E);

}e l s e{

……….

i f(a c t i o n.e q u a l s(I n t e n t.A C T I O N_M E D I A_M O U N T E D)&&

e x t e r n a l S t o r a g e P a t h.e q u a l s(p a t h)){

/收到M O U N T信息后,扫描外部存储

s c a n(c o n t e x t,M e d i a P r o v i d e r.E X T E R N A L_V O L U M E);

}

e l s e i f(a c t i o n.e q u a l s(I n t e n t.A C T I O N_M E D I A_S C A N N E R_S C A N_F I L E)&&

p a t h!=n u l l&&p a t h.s t a r t s W i t h(e x t e r n a l S t o r a g e P a t h+"/")){

//收到请求要求扫描某个文件,注意不会扫描内部存储上的文件

s c a n F i l e(c o n t e x t,p a t h);

…………………………..

}

……下面是它调用的s c a n函数:

s c a n(C o n t e x t c o n t e x t,S t r i n g v o l u m e)

B u n d l e a r g s=n e w B u n d l e();

a r g s.p u t S t r i n g("v o l u m e",v o l u m e);

//直接启动M e d i a S c a n n e r S e r v i c e了,

c o n t e x t.s t a r t S e r v i c e(

n e w I n t e n t(c o n t e x t,M e d i a S c a n n e r S e r v i c e.c l a s s).p u t E x t r a s(a r g s));

总结:

MediaScannerReceiver是用来接收任务的,它收到广播后,会启动MediaService进行扫描工作。

下面看看MediaScannerService.

1.2M e d i a S c a n n e r S e r v i c e

MSS标准的从Service中派生下来,

M e d i a S c a n n e r S e r v i c e e x t e n d s S e r v i c e i m p l e m e n t s R u n n a b l e

//注意:是一个R u n n a b l e…,可能有线程之类的东西存在

下面从Service的生命周期的角度来看看它的工作。

1. onCreate

p u b l i c v o i d o n C r e a t e()

P o w e r M a n a g e r p m=(P o w e r M a n a g e r)g e t S y s t e m S e r v i c e(C o n t e x t.P O W E R_S E R V I C E);

m W a k e L o c k=p m.n e w W a k e L o c k(P o w e r M a n a g e r.P A R T I A L_W A K E_L O C K,T A G);

//获得电源锁,防止在扫描过程中休眠

//单独搞一个线程去跑扫描工作,防止A N R

T h r e a d t h r=n e w T h r e a d(n u l l,t h i s,"M e d i a S c a n n e r S e r v i c e");

t h r.s t a r t();

2. onStartCommand

@O v e r r i d e

p u b l i c i n t o n S t a r t C o m m a n d(I n t e n t i n t e n t,i n t f l a g s,i n t s t a r t I d)

{

//注意这个h a n d l e r,是在另外一个线程中创建的,往这个h a n d l e r里s e n d M e s s a g e

//都会在那个线程里边处理

//不明白的可以去查看h a n d l e r和L o o p e r机制

//这里就是同步机制,等待m S e r v i c e H a n d l e r在另外那个线程创建完毕

w h i l e(m S e r v i c e H a n d l e r==n u l l){

s y n c h r o n i z e d(t h i s){

t r y{

w a i t(100);

}c a t c h(I n t e r r u p t e d E x c e p t i o n e){

}

}

}

i f(i n t e n t==n u l l){

L o g.e(T A G,"I n t e n t i s n u l l i n o n S t a r t C o m m a n d:",

n e w N u l l P o i n t e r E x c e p t i o n());

r e t u r n S e r v i c e.S T A R T_N O T_S T I C K Y;

}

M e s s a g e m s g=m S e r v i c e H a n d l e r.o b t a i n M e s s a g e();

m s g.a r g1=s t a r t I d;

m s g.o b j=i n t e n t.g e t E x t r a s();

//把M e d i a S c a n n e r R e c e i v e r发出的消息传递到另外那个线程去处理。

m S e r v i c e H a n d l e r.s e n d M e s s a g e(m s g);

………….

基本上MSR(MediaScannerReceiver)发出的请求都会传到onStartCommand中处理。如果有多个存储的话,也只能一个一个了。

下面看看那个线程的主函数

3. run

p u b l i c v o i d r u n()

{

//r e d u c e p r i o r i t y b e l o w o t h e r b a c k g r o u n d t h r e a d s t o a v o i d i n t e r f e r i n g

//w i t h o t h e r s e r v i c e s a t b o o t t i m e.

P r o c e s s.s e t T h r e a d P r i o r i t y(P r o c e s s.T H R E A D_P R I O R I T Y_B A C K G R O U N D+

P r o c e s s.T H R E A D_P R I O R I T Y_L E S S_F A V O R A B L E);

//不明白的去看看L o o p e r和h a n d l e r的实现

L o o p e r.p r e p a r e();//把这个l o o p e r对象设置到线程本地存储

m S e r v i c e L o o p e r=L o o p e r.m y L o o p e r();

m S e r v i c e H a n d l e r=n e w S e r v i c e H a n d l e r();//创建h a n d l e r,默认会把这个l o o p e r

//的消息队列赋值给h a n d l e r的消息队列,这样往h a n d l e r中发送消息就是往这个线程的l o o p e r发

L o o p e r.l o o p();//消息循环,内部会处理消息队列中的消息

页码,4/16

//也就是h a n d l e M e s s a g e函数

}

上面handler中加入了一个扫描请求(假设是外部存储的),所以要分析handleMessage函数。

4. handleMessage

p r i v a t e f i n a l c l a s s S e r v i c e H a n d l e r e x t e n d s H a n d l e r

{

@O v e r r i d e

p u b l i c v o i d h a n d l e M e s s a g e(M e s s a g e m s g)

{

B u n d l e a r g u m e n t s=(B u n d l e)m s g.o b j;

S t r i n g f i l e P a t h=a r g u m e n t s.g e t S t r i n g("f i l e p a t h");

t r y{

………这里不讲了

}e l s e{

S t r i n g v o l u m e=a r g u m e n t s.g e t S t r i n g("v o l u m e");

S t r i n g[]d i r e c t o r i e s=n u l l;

i f(M e d i a P r o v i d e r.I N T E R N A L_V O L U M E.e q u a l s(v o l u m e)){

//是扫描内部存储的请求?

//s c a n i n t e r n a l m e d i a s t o r a g e

d i r

e c t o r i e s=n e w S t r i n g[]{

E n v i r o n m e n t.g e t R o o t D i r e c t o r y()+"/m e d i a",

};

}

e l s e i f(M e d i a P r o v i d e r.E X T E R N A L_V O L U M E.e q u a l s(v o l u m e)){

//是扫描外部存储的请求?获取外部存储的路径

d i r

e c t o r i e s=n e w S t r i n g[]{

E n v i r o n m e n t.g e t E x t e r n a l S t o r a g e D i r e c t o r y().g e t P a t h(),

};

}

i f(d i r e c t o r i e s!=n u l l){

//真正的扫描开始了,上面只不过是把存储路径取出来罢了.

s c a n(d i r e c t o r i e s,v o l u m e);

…..

//扫描完了,就把s e r v i c e停止了

s t o p S e l f(m s g.a r g1);

}

};

5. scan函数

p r i v a t e v o i d s c a n(S t r i n g[]d i r e c t o r i e s,S t r i n g v o l u m e N a m e){

m W a k e L o c k.a c q u i r e();

//下面这三句话很深奥…

//从 g e t C o n t e n t R e s o l v e r获得一个C o n t e n t R e s o v e r,然后直接插入

//根据A I D L,这个C o n t e n t R e s o v e r的另一端是M e d i a P r o v i d e r。只要去看看它的

//i n s e r t函数就可以了

//反正这里知道获得了一个扫描U R I即可。

C o n t e n t V a l u e s v a l u e s=n e w C o n t e n t V a l u e s();

v a l u e s.p u t(M e d i a S t o r e.M E D I A_S C A N N E R_V O L U M E,v o l u m e N a m e);

U r i s c a n U r i=g e t C o n t e n t R e s o l v e r().i n s e r t(M e d i a S t o r e.g e t M e d i a S c a n n e r U r i(),v a l u e s);

U r i u r i=U r i.p a r s e("f i l e://"+d i r e c t o r i e s[0]);

//发送广播,通知扫描开始了

s e n d B r o a d c a s t(n e w I n t e n t(I n t e n t.A C T I O N_M E D I A_S C A N N E R_S T A R T E D,u r i));

t r y{

i f(v o l u m e N a m e.e q u a l s(M e d i a P r o v i d e r.E X T E R N A L_V O L U M E)){

o p e n D a t a b a s e(v o l u m e N a m e);

}

//创建真正的扫描器

M e d i a S c a n n e r s c a n n e r=c r e a t e M e d i a S c a n n e r();

//交给扫描器去扫描文件夹 s c a n D i r e c t o r i e s

s c a n n e r.s c a n D i r e c t o r i e s(d i r e c t o r i e s,v o l u m e N a m e);

}c a t c h(E x c e p t i o n e){

L o g.e(T A G,"e x c e p t i o n i n M e d i a S c a n n e r.s c a n()",e);

}

//删除扫描路径

g e t C o n t e n t R e s o l v e r().d e l e t e(s c a n U r i,n u l l,n u l l);

//通知扫描完毕

s e n d B r o a d c a s t(n e w I n t e n t(I n t e n t.A C T I O N_M E D I A_S C A N N E R_F I N I S H E D,u r i));

m W a k e L o c k.r e l e a s e();

}

说说上面那个深奥的地方,在MediaProvider中重载了insert函数,insert函数会调用insertInternal函数。

如下:

p r i v a t e U r i i n s e r t I n t e r n a l(U r i u r i,C o n t e n t V a l u e s i n i t i a l V a l u e s){

l o n g r o w I d;

i n t m a t c h=U R I_M A T C H E R.m a t c h(u r i);

//h a n d l e M E D I A_S C A N N E R b e f o r e c a l l i n g g e t D a t a b a s e F o r U r i()

//刚才那个i n s e r t只会走下面这个分支,其实就是获得一个地址….

//太绕了!!!!!

i f(m a t c h==M E D I A_S C A N N E R){

m M e d i a S c a n n e r V o l u m e=i n i t i a l V a l u e s.g e t A s S t r i n g(M e d i a S t o r e.M E D I A_S C A N N E R_V O L U M E);

r e t u r n M e d i a S t o r e.g e t M e d i a S c a n n e r U r i();

}

……..

再看看它创建了什么样的Scanner,这就是MSS中的createMediaScanner

p r i v a t e M e d i a S c a n n e r c r e a t e M e d i a S c a n n e r(){

//下面这个M e d i a S c a n n e r在f r a m e w o r k/b a s e/中,待会再分析

M e d i a S c a n n e r s c a n n e r=n e w M e d i a S c a n n e r(t h i s);

//设置当前的区域,这个和字符编码有重大关系。

L o c a l e l o c a l e=g e t R e s o u r c e s().g e t C o n f i g u r a t i o n().l o c a l e;

i f(l o c a l e!=n u l l){

S t r i n g l a n g u a g e=l o c a l e.g e t L a n g u a g e();

S t r i n g c o u n t r y=l o c a l e.g e t C o u n t r y();

S t r i n g l o c a l e S t r i n g=n u l l;

i f(l a n g u a g e!=n u l l){

i f(c o u n t r y!=n u l l){

//给扫描器设置当前国家和语言。

s c a n n e r.s e t L o c a l e(l a n g u a g e+"_"+c o u n t r y);

}e l s e{

s c a n n e r.s e t L o c a l e(l a n g u a g e);

}

}

}

r e t u r n s c a n n e r;

}

至此,MSS的任务完成了。接下来是MediaScanner的工作了。

6.总结

MSS的工作流程如下:

l1 单独启动一个带消息循环的工作线程。

l2 主线程接收系统发来的任务,然后发送给工作线程去处理。

l3 工作线程接收任务,创建一个MediaScanner去扫描。

l4 MSS顺带广播一下扫描工作启动了,扫描工作完毕了。

二MediaScanner

MediaScanner位置在

frameworks/base/media/下,包括jni和java文件。

先看看java实现。

这个类巨复杂,而且和MediaProvider交互频繁。在分析的时候要时刻回到MediaProvider去看看。1.初始化

p u b l i c c l a s s M e d i a S c a n n e r

{

s t a t i c{

//l i b m e d i a_j n i.s o的加载是在M e d i a S c a n n e r类中完成的

//这么重要的s o为何放在如此不起眼的地方加载???

S y s t e m.l o a d L i b r a r y("m e d i a_j n i");

n a t i v e_i n i t();

}

p u b l i c M e d i a S c a n n e r(C o n t e x t c){

n a t i v e_s e t u p();//调用j n i层的初始化,暂时不用看了,无非就是一些

//初始化工作,待会在再进去看看

……..

}

刚才MSS中是调用scanDirectories函数,我们看看这个。

2.scanDirectories

p u b l i c v o i d s c a n D i r e c t o r i e s(S t r i n g[]d i r e c t o r i e s,S t r i n g v o l u m e N a m e){

t r y{

l o n g s t a r t=S y s t e m.c u r r e n t T i m e M i l l i s();

i n i t i a l i z e(v o l u m e N a m e);//初始化

p r e s c a n(n u l l);//扫描前的预处理

l o n g p r e s c a n=S y s t e m.c u r r e n t T i m e M i l l i s();

f o r(i n t i=0;i

g t h;i++){

//扫描文件夹,这里有一个很重要的参数 m C l i e n t

//p r o c e s s D i r e c t o r y是一个n a t i v e函数

p r o c e s s D i r e c t o r y(d i r e c t o r i e s[i],M e d i a F i l e.s F i l e E x t e n s i o n s,m C l i e n t);

}

l o n g s c a n=S y s t e m.c u r r e n t T i m e M i l l i s();

p o s t s c a n(d i r e c t o r i e s);//扫描后处理

l o n g e n d=S y s t e m.c u r r e n t T i m e M i l l i s();

…..打印时间,异常处理…没了…

下面简单讲讲initialize ,preScan和postScan都干嘛了。

p r i v a t e v o i d i n i t i a l i z e(S t r i n g v o l u m e N a m e){

//打开M e d i a P r o v i d e r,获得它的一个实例

m M e d i a P r o v i d e r=m C o n t e x t.g e t C o n t e n t R e s o l v e r().a c q u i r e P r o v i d e r("m e d i a");

//得到一些u r i

m A u d i o U r i=A u d i o.M e d i a.g e t C o n t e n t U r i(v o l u m e N a m e);

m V i d e o U r i=V i d e o.M e d i a.g e t C o n t e n t U r i(v o l u m e N a m e);

m I m a g e s U r i=I m a g e s.M e d i a.g e t C o n t e n t U r i(v o l u m e N a m e);

m T h u m b s U r i=I m a g e s.T h u m b n a i l s.g e t C o n t e n t U r i(v o l u m e N a m e);

//外部存储的话,可以支持播放列表之类的东西,搞了一些个缓存池之类的

//如m G e n r e C a c h e等

i f(!v o l u m e N a m e.e q u a l s("i n t e r n a l")){

//w e o n l y s u p p o r t p l a y l i s t s o n e x t e r n a l m e d i a

m P r o c e s s P l a y l i s t s=t r u e;

m G e n r e C a c h e=n e w H a s h M a p();

preScan,这个函数很复杂:

大概就是创建一个FileCache,用来缓存扫描文件的一些信息,例如last_modified等。这个FileCache是从MediaProvider中已有息构建出来的,也就是历史信息。后面根据扫描得到的新信息来对应更新历史信息。

postScan,这个函数做一些清除工作,例如以前有video生成了一些缩略图,现在video文件被干掉了,则对应的缩略图也要被掉。

另外还有一个mClient,这个是从MediaScannerClient派生下来的一个东西,里边保存了一个文件的一些信息。后续再分析刚才说到,具体扫描工作是在processDirectory函数中完成的。这个是一个native函数。

在frameworks/base/media/jni/android_media_MediaScanner.cpp中。

三MediaScanner JNI层分析

MediaScanner JNI层内容比较多,单独搞一节分析吧。

先看看android_media_MediaScanner这个文件。

1. native_init函数,jni对应的函数如下

s t a t i c v o i d

a n d r o i d_m e d i a_M e d i a S c a n n e r_n a t i v e_i n i t(J N I E n v*e n v)

{

j c l a s s c l a z z;

c l a z z=e n v->F i n

d C l a s s("a n d r o i d/m

e d i a/M e d i a S c a n n e r");

//得都J A V A类中m N a t i v e C o n t e x t这个成员i d

f i e l d s.c o n t e x t=e n v->G e t F i e l d I D(c l a z z,"m N a t i v e C o n t e x t","I");

//不熟悉J N I的自己去学习下吧

}

3.native_setup函数,jni对应函数如下:

a n d r o i d_m e d i a_M e d i a S c a n n e r_n a t i v e_s e t u p(J N I E n v*e n v,j o

b j e

c t t h i z)

{

//创建M e d i a S c a n n e r对象

M e d i a S c a n n e r*m p=c r e a t e M e d i a S c a n n e r();

//太变态了,自己不保存这个对象指针.

//却把它设置到j a v a对象的m N a t i v e C o n t e x t去保存

e n v->S e t I n t F i e l d(t h i z,

f i e l d s.c o n t e x t,(i n t)m p);

}

//创建M e d i a S c a n n e r函数

s t a t i c M e d i a S c a n n e r*c r e a t e M e d i a S c a n n e r(){

#i f B U I L D_W I T H_F U L L_S T A G E F R I G H T

..

//使用g o o g l e自己的

r e t u r n n e w S t a g e f r i g h t M e d i a S c a n n e r;

#e n d i f

#i f n d e f N O_O P E N C O R E

//使用o p e n c o r e提供的

….

r e t u r n n e w P V M e d i a S c a n n e r();

#e n d i f

4.processDirectories函数,jni对应如下:

a n d r o i d_m e d i a_M e d i a S c a n n e r_p r o c e s s D i r e c t o r y(J N I E n v*e n v,j o

b j e

c t t h i z,j s t r i n g p a t h,

j s t r i n g e x t e n s i o n s,j o b j e c t c l i e n t)

{

M e d i a S c a n n e r*m p=(M e d i a S c a n n e r*)e n v->G e t I n t F i e l d(t h i z,f i e l d s.c o n t e x t);

//每次都要回调到J A V A中去取这个S c a n n e r!!

………

c o n s t c h a r*p a t h S t r=e n v->G e t S t r i n g U T F C h a r s(p a t h,N U L L);

c o n s t c h a r*e x t e n s i o n s S t r=e n v->G e t S t r i n g U T F C h a r s(e x t e n s i o n s,N U L L);

…….

//又在C++这里搞一个c l i e n t,然后把j a v a的c l i e n t放到C++C l i e n t中去保存

//而且还是栈上的临时变量..

M y M e d i a S c a n n e r C l i e n t m y C l i e n t(e n v,c l i e n t);

//s c a n n e r扫描文件夹,用得是C++的c l i e n t

m p->p r o c e s s D i r e c t o r y(p a t h S t r,e x t e n s i o n s S t r,m y C l i e n t,E x c e p t i o n C h e c k,e n v);

e n v->R e l e a s e S t r i n g U T F C h a r s(p a t h,p a t h S t r);

e n v->R e l e a s e S t r i n g U T F C h a r s(e x t e n s i o n s,e x t e n s i o n s S t r);

}

到这里似乎就没有了,那么扫描后的数据库是怎么更新的呢?为什么要传入一个client进去呢?看来必须得trace到scanner中去知道了。

四PVMediaScanner

这个在external/opencore/android/mediascanner.cpp中。

1.processDirectory

s t a t u s_t M e d i a S c a n n e r::p r o c e s s D i r e c t o r y(c o n s t c h a r*p a t h,c o n s t c h a r*e x t e n s i o n s,

M e d i a S c a n n e r C l i e n t&c l i e n t,E x c e p t i o n C h e c k e x c e p t i o n C h e c k,v o i d*e x c e p t i o n E n v)

{

I n i t i a l i z e F o r T h r e a d();

i n t e r r o r=0;

s t a t u s_t r e s u l t=P V M F S u c c e s s;

….

//调用c l i e n t的设置区域函数

c l i e n t.s e t L o c a l e(m L o c a l e);

//扫描文件夹,咋还没开始??

r e s u l t=d o P r o c e s s D i r e c t o r y(p a t h B u f f e r,p a t h R e m a i n i n g,e x t e n s i o n s,c l i e n t,

e x c e p t i o n C h e c k,e x c e p t i o n E n v);

..

2.doProcessDirectory

s t a t u s_t M e d i a S c a n n e r::d o P r o c e s s D i r e c t o r y(c h a r*p a t h,i n t p a t h R e m a i n i n g,c o n s t c h a r* e x t e n s i o n s,

M e d i a S c a n n e r C l i e n t&c l i e n t,E x c e p t i o n C h e c k e x c e p t i o n C h e c k,v o i d*e x c e p t i o n E n v)

{

…终于看到点希望了

//打开这个文件夹,枚举其中的内容。

//题外话,这个时候F i l e M a n a g e r肯定删不掉这个文件夹!!

D I R*d i r=o p e n d i r(p a t h);

w h i l e((e n t r y=r e a d d i r(d i r))){

c o n s t c h a r*n a m e=e n t r y->d_n a m e;

//不处理.和..文件夹

i f(i s D i r e c t o r y){

……..

//不处理.开头的文件夹。如果是文件夹,递归调用d o P r o c e s s D i r e c t o r y

//深度优先啊!

i n t e r r=d o P r o c e s s D i r e c t o r y(p a t h,p a t h R e m a i n i n g-n a m e L e n g t h-1,e x t e n s i o n s,c l i e n t, e x c e p t i o n C h e c k,e x c e p t i o n E n v);

i f(e r r){

L O G E("E r r o r p r o c e s s i n g'%s'-s k i p p i n g/n",p a t h);

c o n t i n u e;

}

}e l s e i f(f i l e M a t c h e s E x t e n s i o n(p a t h,e x t e n s i o n s)){

//是一个可以处理的文件,交给c l i e n t处理

//彻底疯掉了….这是干嘛呢???

c l i e n t.s c a n F i l e(p a t h,s t a t b u f.s t_m t i m e,s t a t b u f.s t_s i z e);

这里要解释下,刚才createMediaScanner中,明明创建的是PVMediaScanner,为何这里看得是MediaScanner代码呢?

l因为PVMediaScanner从MediaScanner中派生下来的,而且没有重载processDirectory函数

l Eclaire没有PVMediaScanner这样的东西,估计是froyo又改了点啥吧。

FT,processDirctory无非是列举一个目录内容,然后又反回去调用client的scanFile处理了。为何搞这么复杂?只有回去看看的client干什么了。

3.MediaScannerClient---JNI层

JNI中的这个类是这样的:

c l a s s M y M e

d i a S c a n n

e r C l i e n t:p u b l i c M e d i a S c a n n e r C l i e n t

//这是它的s c a n F i l e实现

v i r t u a l b o o l s c a n F i l e(c o n s t c h a r*p a t h,l o n g l o n g l a s t M o d i f i e d,l o n g l o n g f i l e S i z e)

{

//再次崩溃了,C++的c l i e n t调用了刚才传进去的j a v a C l i e n t的

//s c a n F i l e函数…不过这次还传进去了该文件的路径,最后修改时间和文件大小。

m E n v->C a l l V o i d M e t h o d(m C l i e n t,m S c a n F i l e M e t h o d I D,p a t h S t r,l a s t M o d i f i e d,f i l e S i z e);

…..想死,,,

}

没办法了,只能再去看看MediaScanner.java传进去的那个client了。

4.MediaScannerClient----JAVA层

这个类在MediaScanner.java中实现。

p r i v a t e c l a s s M y M e d i a S c a n n e r C l i e n t i m p l e m e n t s M e d i a S c a n n e r C l i e n t:

p u b l i c v o i d s c a n F i l e(S t r i n g p a t h,l o n g l a s t M o d i f i e d,l o n g f i l e S i z e){

//调用d o S c a n F i l e..很烦..

d o S c a n F i l e(p a t h,n u l l,l a s t M o d i f i

e d,

f i l e S i z e,f a l s e);

//下面是d o S c a n F i l e

p u b l i c U r i d o S c a n F i l e(S t r i n g p a t h,S t r i n g m i m e T y p e,l o n g l a s t M o d i f i e d,l o n g f i l e S i z e,

b o o l e a n s

c a n A l w a y s){

//预处理,看看之前创建的文件缓存中有没有这个文件

F i l e C a c h e E n t r y e n t r y=b e g i n F i l e(p a t h,m i m e T y p e,l a s t M o d i f i e d,f i l e S i z e);

//r e s c a n f o r m e t a d a t a i f f i l e w a s m o d i f i e d s i n c e l a s t s c a n

i f(e n t r y!=n u l l&&(e n t r y.m L a s t M o d i f i e d C h a n g e d||s c a n A l w a y s)){

//如果事先有这个文件的信息,则需要修改一些信息,如长度,最后修改时间等

…..

//真正的扫描文件

p r o c e s s F i l e(p a t h,m i m e T y p e,t h i s);

//扫描完了,做最后处理

e n d F i l e(e n t r y,r i n g t o n e s,n o t i

f i c a t i o n s,a l a r m s,m u s i c,p o d c a s t s);

processFile又是jni层的。

对应android_media_MediaScanner_processFile函数

a n d r o i d_m e d i a_M e d i a S c a n n e r_p r o c e s s F i l e(J N I E n v*e n v,j o

b j e

c t t h i z,j s t r i n g p a t h,j s t r i n g m i m e T y p e,j o b j e c t c l i e n t)

{

M e d i a S c a n n e r*m p=(M e d i a S c a n n e r*)e n v->G e t I n t F i e l d(t h i z,f i e l d s.c o n t e x t);

//无语了,又搞一个 M y M e d i a S c a n n e r C l i e n t

M y M e d i a S c a n n e r C l i e n t m y C l i e n t(e n v,c l i e n t);

m p->p r o c e s s F i l e(p a t h S t r,m i m e T y p e S t r,m y C l i e n t);

…}

第一次到PVMediaScanner中来了

s t a t u s_t P V M e d i a S c a n n e r::p r o c e s s F i l e(c o n s t c h a r*p a t h,c o n s t c h a r*m i m e T y p e,

M e d i a S c a n n e r C l i e n t&c l i e n t)

{

s t a t u s_t r e s u l t;

I n i t i a l i z e F o r T h r e a d();

//调用c l i e n t的b e g i n F i l e,估计是做一些啥预处理

c l i e n t.s e t L o c a l e(l o c a l e());

c l i e n t.b e g i n F i l e();

//L O G D("p r o c e s s F i l e%s m i m e T y p e:%s/n",p a t h,m i m e T y p e);

c o n s t c h a r*e x t e n s i o n=s t r r c h r(p a t h,'.');

i f(e x t e n s i o n&&s t r c a s e c m p(e x t e n s i o n,".m p3")==0){

r e s u l t=p a r s e M P3(p a t h,c l i e n t);//c l i e n t又传进去了

…根据后缀名去扫描….

}

c l i e n t.e n

d F i l e();

到parseMP3去看看。这个在

s t a t i c P V M F S t a t u s p a r s e M P3(c o n s t c h a r*f i l e n a m e,M e d i a S c a n n e r C l i e n t&c l i e n t)

{//这个函数太专业了,和编解码有关,我们重点关注c l i e n t在这里干什么了

//原来,解析器从文件中解析出一个信息,就调用c l i e n t的a d d S t r i n g T a g

i f(!c l i e n t.a d d S t r i n g T a g("d u r a t i o n",b u f f e r))

….

addStringTag在JNI的client中处理。

这个MediaScannerClient是在opencore中的那个MediaScanner.cpp中实现的,而android_media_MediaScanner.cpp中的是MyMediaScannerClient,从MediaScannerClient派生下来的

b o o l M e d i a S

c a n n e r C l i e n t::a

d d S t r i n g T a g(c o n s t c h a r*n a m e,c o n s t c h a r*v a l u e)

{

i f(m L o c a l e E n c o d i n g!=k E n c o d i n g N o n e){

//字符串编码之类的转换。不详述了

b o o l n o n A s

c i i=f a l s e;

c o n s t c h a r*c h p=v a l u e;

c h a r c h;

w h i l e((c h=*c h p++)){

i f(c h&0x80){

n o n A s c i i=t r u e;

b r e a k;

}

}

//如果不是A S C I I编码的话,内部先保存一下这些个t a g信息

//待会扫描完后再集中做一次字符串编码转换

i f(n o n A s c i i){

//s a v e t h e s t r i n g s f o r l a t e r s o t h e y c a n b e u s e d f o r n a t i v e e n c o d i n g d e t e c t i o n

m N a m e s->p u s h_b a c k(n a m e);

m V a l u e s->p u s h_b a c k(v a l u e);

r e t u r n t r u e;

}

//e l s e f a l l t h r o u g h

}

//调用子类的h a n d l e S t r i n g T a g

r e t u r n h a n d l e S t r i n g T a g(n a m e,v a l u e);

}

c l a s s M y M e

d i a S c a n n

e r C l i e n t:p u b l i c M e d i a S c a n n e r C l i e n t{

//调用到子类的h a n d l e S t r i n g T a g了

v i r t u a l b o o l h a n d l e S t r i n g T a g(c o n s t c h a r*n a m e,c o n s t c h a r*v a l u e)

{

//又传递到J A V A层的h a n d l e S t r i n g T a g来处理

//麻木了..

m E n v->C a l l V o i d M e t h o d(m C l i e n t,m H a n d l e S t r i n g T a g M e t h o d I D,n a m e S t r,v a l u e S t r);

}

JAVA层

M e d i a S c a n n e r S e r v i c e中的M y M e d i a S c a n n e r C l i e n t类

p u b l i c v o i d h a n d l e S t r i n g T a g(S t r i n g n a m e,S t r i n g v a l u e){

//下层扫描的文件t a g信息,全部处理后赋值给j a v a层这个M y S c a n n e r C l i e n t了

例如M P3的t i t l e,专辑名等等。

….

i n t n u m=p a r s e S u b s t r i n g(v a l u e,0,0);

m T r a c k=(n u m*1000)+(m T r a c k%1000);

}e l s e i f(n a m e.e q u a l s I g n o r e C a s e("d u r a t i o n")){

m D u r a t i o n=p a r s e S u b s t r i n g(v a l u e,0,0);

}e l s e i f(n a m e.e q u a l s I g n o r e C a s e("w r i t e r")||n a m e.s t a r t s W i t h("w r i t e r;")){

m W r i t e r=v a l u e.t r i m();

到这里了,还没写到数据库呢?啥时候更新数据库?看来是在client.endFile()中了。

但是这个endClient并没有调用到JAVA层去。那在哪里结束呢?

还记得JAVA中的doScanFile函数吗,对了,这个endFile就是在那里直接由JAVA调用的。

p r i v a t e U r i e n d F i l e(F i l e C a c h e E n t r y e n t r y,b o o l e a n r i n g t o n e s,b o o l e a n n o t i f i c a t i o n s,

b o o l e a n a l a r m s,b o o l e a n m u s i c,b o o l e a n p o d

c a s t s)

t h r o w s R e m o t e E x c e p t i o n{

//u p d a t e d a t a b a s e

U r i t a b l e U r i;

b o o l e a n i s A u d i o=M e d i a F i l e.i s A u d i o F i l e T y p e(m F i l e T y p e);

b o o l e a n i s V i d e o=M e d i a F i l e.i s V i d e o F i l e T y p e(m F i l e T y p e);

b o o l e a n i s I m a g e=M e d i a F i l e.i s I m a g e F i l e T y p e(m F i l e T y p e);

….

//来了一个新文件,直接插入数据库

r e s u l t=m M e d i a P r o v i d e r.i n s e r t(t a b l e U r i,v a l u e s);

//或者更新数据库

m M e d i a P r o v i d e r.u p d a t e(r e s u l t,v a l u e s,n u l l,n u l l);

这回真算是完了。

5.流程总结

l MediaScanner(MS)调用scanDirectories中的processDirectory,进入到JNI层

l JNI调用PVMediaScanner的processDirectory

l PVMediaScanner的processDirectory为目录下的文件调用MyMediaScannerClient的scanFile

l MyMediaScannerClient

本文转自:h t t p://b l o g.c s d n.n e t/I n n o s t/a r t i c l e/d e t a i l s/6083467

组织构架图实例分析(新)

组织构架图实例分析 一,公司简介 1.简史: 联想集团成立于1984年,由中科院计算所投资20万元人民币、11名科技人员创办,是一家在信息产业内多元化发展的大型企业集团,富有创新性的国际化的科技公司。由联想及原IBM个人电脑事业部所组成。从1996年开始,联想电脑销量一直位居中国国内市场首位,2013年;联想电脑销售量升居世界第1,成为全球最大的PC生产厂商。作为全球个人电脑市场的领导企业,联想从事开发、制造并销售可靠的、安全易用的技术产品及优质专业的服务,帮助全球客户和合作伙伴取得成功。联想公司主要生产台式电脑、服务器、笔记本电脑、打印机、掌上电脑、主板、手机等商品。 2.管理团队: 联想集团除了调整高层管理团队成员、组建了中西合璧的领导班子之外,更大的变化在于“新班子”和“老班子”运作方式的差异。在“老班子”中,CEO 很强势,重大决策只和少数人商量,然后就开会公布,交给下面执行,导致执行力很差、各部门之间难以有效配合与协同。而在最高领导的搭配与组合方面,也存在错位,配合不畅。例如,表面上看,杨元庆作为董事长负责战略制定,阿梅里奥负责日常运营,但实际的运作使得两人更像“联席CEO”——这种通常会影响决策效率的权力分配,让联想看起来更像是一只齐头并进的“双头怪兽”:一个年富力强、注重执行力、喜欢亲力亲为的中方董事长;一个个性鲜明、国际化经验丰富、精于日常运营的西方成本杀手。 3.重要事件: ①奥委会合作: ②放弃收购: ③迈凯轮合作 ④与NEC合资 ⑤收购Medion ⑥收购摩托罗拉移动 4.企业文化 ①企业定位:联想从事开发、制造及销售最可靠的、安全易用的技术产品。我们的 成功源自于不懈地帮助客户提高生产力,提升生活品质。 ②使命:为客户利益而努力创新;创造世界最优秀、最具创新性的产品;像对待技术 创新一样致力于成本创新;让更多的人获得更新、更好的技术;最低的总体拥有成 本(TCO),更高的工作效率。 ③核心价值观:成就客户—致力于客户的满意与成功;创业创新—追求速度和效率, 专注于对客户和公司有影响的创新;精准求实—基于事实的决策与业务管理;诚信 正直—建立信任与负责任的人际关系。 二,组织结构前后变化分析 1.组织结构发展史

【经典案例】企业组织结构设计案例及分析

【经典案例】企业组织结构设计案例及分析 引言: 在企业迅猛发展的当今时代,企业规模迅速扩大,员工岗位冗杂,公司组织结构的问题复杂也就显现出来了,并阻碍了公司的进一步发展。企业如何设计科学合理的组织结构成为了企业管理人员心头的一块大石头。基于此,设计符合企业发展,能够改善企业内部的管理现状,为公司发展提供良好的内部组织结构的方案就显得很紧迫了。本文是人力资源专家——华恒智信为某企业设计组织架构方案的项目纪实。 客户评价 对专家委员会的管理模式进行改革,是我们目前非常关注的问 题。华恒智信专家团队为我们提出的“投资委员会+项目专家办 公室”的管理模式,可以有效地配置专家资源,并通过及时的、 专业的专家投资评估与审查,为我们做出投资决策提供帮助。 ——Q开发投资有限公司汪总经理 【客户行业】:投资公司 【问题类型】:组织结构 【客户背景及现状问题】 Q开发投资有限公司是经市人民政府批准,于2001年4月设立的市直属综

合性投资公司。主要承担政府重大建设项目的投融资;接受政府授权持有并运作国有股权;自主开展资本运营,促进资产跨地区、跨行业、跨部门、跨所有制的流动和重组。 Q开发投资有限公司采用集团公司的组织形式,公司目前有6各部门——分别是研究发展部、资本运营部、投资开发部、财务融资部、人力资源部和总经理工作部;公司有3个子公司,现有人员27人。 目前,Q开发投资公司的一把手是新上任的汪总经理,他进入企业后的第一件事就是了解企业内部管理的现状,发现企业当前的优势与劣势,并借助外部第三方专业咨询公司的力量,对组织构架及管控模式进行初步调研与分析后,提出了组织构架新的改进方案。 华恒智信专家团队在对Q公司的临时组织——项目专家组和专家咨询委员会的组织职能与管控模式进行分析时,发现这两个临时组织的内部管理存在着以下的问题。 1.项目专家组和专家咨询委员会职责模糊,界线不清 Q开发投资公司的专家委员会由两个临时的部门构成——项目专家组和专家咨询委员会,两个临时组织的职责范围模糊、界限不清,经常会造成两个部门工作相互重叠的现象。 2.临时性委员会无固定人员维持工作 该开发投资公司总是在出现运营投资项目时,才临时召集专家 组成员组成专家组或咨询专家组参与项目的决策,这些专家组成员并非公司的固定人员,都是公司从外部聘用的兼职专家。因而,当出现投资项目时,临时召集外部专家的工作一直由总经理工作部临时代理。但是随着项目量的逐渐增多,负

组织结构管理案例分析

晾衣理论:先抓住衣领 某企业组织架构与人事调整案例 《赢周刊》柏明顿人力资源管理咨询公司郭晓亮 企业组织架构调整是一项理论与实践高度统一的工作,对于企业组织架构调整的一般原理和原则,大家都比较熟悉。但是对于某一具体企业来说,如何运用这些原理和原则?理论如何与实践相结合,以设计出适合自己企业的组织架构?在组织架构调整过程中,应注意哪些事项,以保证组织架构的顺利运作?以下我们(柏明顿公司咨询顾问师)帮助某制造企业客户进行组织架构调整的案例: 背景: 位于内地的某机械公司是一家传统国有企业,公司的规模和技术处于国内领先地位,但由于经营不善,2000年公司被迫进行了破产重组,任命了王总担任新的公司董事长兼总经理。王总上任后一方面加强了公司的市场营销工作,另一方面也进行了一些适应市场的内部管理改革,经营状况逐渐好转。2002年,公司顺利实现赢利,并取得了较快发展速度,到2004年底,公司员工1800多人,年销售额5亿多元,利润3600万元。 随着公司的发展,王总意识到一方面市场竞争越来越激烈,特别是外资企业越来越重视中国市场,使得公司的技术优势荡然无存,反而变成了劣势;另一方面随着国家整个制造业的快速发展,对机械的需求也必将大量增加,公司同时又面临着一个快速发展的机遇期。 在内部管理方面,公司虽然经过了资产重组和减员整顿,但由于公司的组织架构没有进行大的调整,也没有进行科学的定岗定编,因此仍然存在着机构林立、人浮于事、效率低下的情况,加上员工绝大部分还是原来留下来的,员工观念普遍跟不上企业发展要求。 根据对公司情况的分析,王总决定从内部管理抓起,首先对公司的组织架构进行重新设计和调整。考虑到公司内部缺乏专业的人力资源管理人才,而组织架构的调整又涉及到复杂的人事变动和利益调整,公司决定聘请专业顾问来指导进行。2005年初,公司聘请柏明顿公司咨询顾问进行该项目的咨询,对公司的组织架构体系进行了重新设计和调整。

2020健身行业现状及前景趋势

2020年健身行业现状及 前景趋势 2020年

目录 1.健身行业现状 (4) 1.1健身行业定义及产业链分析 (4) 1.2健身市场规模分析 (5) 1.3健身市场运营情况分析 (6) 2.健身行业存在的问题 (9) 2.1缺乏市场和行业标准、运作规范和职业资质准入 (9) 2.2专业化程度低 (9) 2.3市场短期和投机行为普遍 (9) 2.4管理水平较低 (9) 2.5供应链整合度低 (10) 3.健身行业前景趋势 (10) 3.1中国运动健身行业迎来新突破 (10) 3.2需求释放,健身群体规模整体保持增长,健身文化逐渐成为主流11 3.3互联网入局,突破时间、空间限制,带来全新健身体验 (11) 3.4健身行业经历洗牌阶段,建立新格局 (11) 3.5行业协同整合成为趋势 (11) 3.6生态化建设进一步开放 (12) 3.7细分化产品将会最具优势 (12) 3.8需求开拓 (13) 4.健身行业政策环境分析 (13)

4.1健身行业政策环境分析 (13) 4.2健身行业经济环境分析 (14) 4.3健身行业社会环境分析 (14) 4.4健身行业技术环境分析 (14) 5.健身行业竞争分析 (16) 5.1健身行业竞争分析 (16) 5.1.1对上游议价能力分析 (16) 5.1.2对下游议价能力分析 (16) 5.1.3潜在进入者分析 (17) 5.1.4替代品或替代服务分析 (17) 5.2中国健身行业品牌竞争格局分析 (17) 5.3中国健身行业竞争强度分析 (18) 6.健身产业投资分析 (18) 6.1中国健身技术投资趋势分析 (19) 6.2中国健身行业投资风险 (19) 6.3中国健身行业投资收益 (20)

(完整版)心理学研究方法

福建省高等教育自学考试应用心理学专业(独立本科段) 《心理学研究方法》课程考试大纲 第一部分课程性质与目标《心理学研究方法》是福建省高等教育自学考试应用心理学专业(独立本科段)的一门专业基础必修课程,目的在于帮助考生了解和掌握心理学研究的理论基础和主要方法,检验考生对心理学研究理论基础与主要方法,检验考生对心理学研究方法的基本知识和主要内容的掌握水平与应用能力。 心理学研究的对象是心理现象。它的研究主题十分广泛:即涉及人的心理也涉及动物的心理;即涉及个体的心理也涉及群体的心理;即涉及有意识的心理也涉及潜意识的心理;即涉及与生理过程密切相关的心理也涉及与社会文化密切相关的心理。心理学研究是一种以经验的方式对心理现象进行科学探究的活动。由于心理学的研究方法是以经验的或实证的资料为依据的,因而使心理学与哲学相区别,也与人文学科相区别。 设置本课程的具体目的要求是,学习和掌握心理学研究方法的基本理论和基本技能,将有助于学生们理解心理学的基本概念、基本原理和基本理论。理解心理学家在探索心理与行动时所做的一切,有助于考生将来为心理学的发展做出有益的贡献。 第二部分考核内容与考核目标 第一编心理学研究基础 第一章心理学与科学 一、学习目的与要求 通过本章学习,要求考生了解心理学的性质,了解心理学科学研究的方法、特征及基本步骤,理解心理学研究的伦理问题和伦理规范。 二、考核知识点与考核目标 1、识记: (1)心理学的含义; (2)心理学科学研究的特征:系统性、重复性、可证伪性和开放性; (3)知情同意。 2、领会: (1)一般人探索世界的常用方法; (2)心理学研究主要包含哪几个步骤; (3)科学研究的开放性主要表现在哪几方面; 3、应用: (1)根据科学研究的特征来分析某些心理学的研究; (2)心理学研究的伦理问题及以人为被试的研究的伦理规范来分析是否可以在心理学研究中使用欺骗的方法。

价值流程图

价值流程图 价值流程图(Value Stream Mapping,简称VSM) [编辑] 价值流程图概述 价值流程图(Value Stream Mapping)是丰田精益制造(Lean Manufacturing)生产系统框架下的一种用来描述物流和信息流的形象化工具。它运用精益制造的工具和技术来帮助企业理解和精简生产流程。价值流程图的目的是为了辨识和减少生产过程中的浪费。浪费在这里被定义为不能够为终端产品提供增值的任何活动,并经常用于说明生产过程中所减少的“浪费”总量。VSM可以作为管理人员、工程师、生产制造人员、流程规划人员、供应商以及顾客发现浪费、寻找浪费根源的起点。从这点来说,VSM还是一项沟通工具。但是,VSM往往被用作战略工具、变革管理工具。 VSM通过形象化地描述生产过程中的物流和信息流,来达到上述工具目的。从原材料购进的那一刻起,VSM就开始工作了,它贯穿于生产制造的所有流程、步骤,直到终端产品离开仓储。 对生产制造过程中的周期时间、当机时间、在制品库存、原材料流动、信息流动等情况进行描摹和记录,有助于形象化当前流程的活动状态,并有利于对生产流程进行指导,朝向理想化方向发展。

VSM通常包括对“当前状态”和“未来状态”两个状态的描摹,从而作为精益制造战略的基础。 价值流程图(VSM)分析的是两个流程:第一个是信息(情报)流程,即从市场部接到客户订单或市场部预测客户的需求开始,到使之变成采购计划和生产计划的过程;第二个是实物流程,即从供应商供应原材料入库开始,随后出库制造、成品入库、产品出库,直至产品送达客户手中的过程。此外,实物流程中还包括产品的检验、停放等环节。 企业在进行价值流程图(VSM)分析时,首先要挑选出典型的产品作为深入调查分析的对象,从而绘制出信息(情报)流程和实物流程的现状图,然后将现状图与信息(情报)和实物流程的理想状况图相比较,发现当前组织生产过程中存在的问题点,进而针对问题点提出改进措施。 [编辑] 价值流程图的历史 1980年代,丰田公司的首席工程师Taiichi Ohno与sensei Shigeo Shingo率先运用去除生产浪费的方法来获取竞争优势,他们的主要出发点是提高生产效率,而非提高产品质量。之所以这么做,是因为他们认为生产效率的提高将有助于精益制造,从而能够暴露出系统中的深层的浪费问题和质量问题。因此,对浪费问题发起的系统性攻击也就是对质量问题的深层原因展开攻击,对根本性的管理问题展开攻击。丰田生产系统中认定的七种常见浪费(括号中内容为Jones的表述): 1。生产过剩(快于必要的速度); 2。等待; 3。运输(搬运);

集团组织架构案例分析

《中国人民大学集团管控》课程认为企业的组织架构有直线型、职能型、直线—职能型、分权事业部型、复合事业部型、矩阵型、动态联盟型、立体多维型和网络组织型等多种形态。本文则主要是针对适合于企业集团的U型、H型和M型等三种形态进行比较。 ⒈U型结构:过分集权的组织架构 U型结构也称为“一元结构”,是由泰勒首先提出的,是将管理工作按职能划分为若干个部门,各部门只有很小的独立性,权力集中在企业最高决策者手中,其基本框架可概括为下图 这种组织结构的优点是: ①集中领导,统一指挥,便于调配人、财、物; ②职责清楚,办事效率高; ③工作井然有序,整个企业有较高的稳定性。 这种组织结构的缺点是: ①等级分明,层次过多,决策过程缓慢; ②各职能部门以自我为中心,协调困难; ③下级部门的主动性、积极性不能有效发挥; ④机构臃肿,官僚主义严重。 尽管U型结构存在许多缺点,但不失为一种行之有效的组织形式。目前,我国企业中多采用了这一形式。

企业集团各成员企业在纵向合并的初期,一般都采用这种结构。但由于管理幅度过大而造成行政管理费用大于市场交易费、事无巨细的过分集中使企业无力顾及长期发展战略决策与控制、各职能部门为追求各自的目标而偏离总目标等问题出现后,企业集团将寻求新的组织架构。 ⒉H型结构:过分分权的组织架构 H型结构也称为“控股公司结构”,是一种或分分权的组织架构。历史上的H型结构企业是由众多的中小型U型结构企业横向合并而成的。 母公司持有子公司部分或全部股份,下属各子公司具有独立的法人资格,所从事的产业一般关联度不大,从而形成相对独立的利益中心和投资中心,是与U型集权结构形成鲜明对照的分权结构形式,其基本框架可概括为下图 这种组织结构的优点是: ①包含U型结构,构成控股公司的子公司往往是U型结构; ②子公司保持了相当大的独立性和自由度,有利于提高子公司经营的积极性; ③对分散企业的经营风险积极意义。 这种结构的缺点是: ①母公司的战略、方针等难以向子公司渗透、贯彻; ②母公司的职能部门并不直接为子公司服务,子公司难以充分利用母公司的参谋人员; ③各子公司也要成立股东大会、董事会等机构,增加了管理成本;

中国健身行业的现状以及新发展

中国健身行业的现状以及新发展 健身俱乐部落户海内不外短短几年,却发展得异常红火。 作为该行业核心支柱的健身教练在公家心目中究竟印象如何呢?近日,中国青年报社调查中央、智联招聘和新浪招聘联合进行的一项职业吸引力调查发现,30%的公家觉得“现在做健身教练这行的鱼龙混杂,高素质健身教练却未几”。调查中,28%的公家以为“随着健身热兴起,教练市场肯定需求火爆”。 据08年8月,劳动和社会保障部宣布的“北京市二季度职业排行榜”显示,健身、娱乐场所服务职员作为“新生气力”首次入榜,跻身北京市二季度最轻易就业的20个职业。 现在的健身教练培训机构如雨后春笋般的涌入健身事业大潮,培训项目也五花八门。由此可见健身行业的发展正以惊人的速度从我们身边崛起。而现如今我们需要的是具备健身教练专业培训体系和专业培训技能的培训机构。目的清楚,落到实处——“信誉是教育的本质,质量是教育的核心。”集团操课类着名的培训机构主要集中在北京、武汉、上海等几个城市。而从健身教练的收入水平上来看,排在前面的是深圳、广东、北京、上海等大中型的城市,在这几个城市从业的教练月薪过万是很正常的事情。所以,根据自己的需求,找对地方,才是成为专业操课教练的条件。 健身教练行业目前存在的问题: 1.公家以为健身教练是吃青春饭的 a)很多人以为教练职业是个青春饭,这种认识是不准确 的。能把动作做得好看、有力度好像是教练能立足于领操台

的基本条件,但跟着会员对健身熟悉的不断深化,教练的专业知识是否过硬会成为更重要的评判尺度。此外,经验和服务意识也是赢得顾客的枢纽。国外也有岁数很大的人仍旧在做健身教练。现在从事教练这个职业的人大多是年青人,但是跟着健身行业的发展,以后很可能会泛起四五十岁的资深教练,他们不仅具有很高的理论知识,同时还能够在一线对会员健身做出很全面正确的指导。 b)健身教练的基本素质:1丰硕的理论知识;2亲身的健 身体会;3为人师表的立场。三者缺一不可,而理论知识和健身体会若非长时间参与是很难获得的,为人师表的立场则是一个成功运动员转型做教练的意识形态,很多优秀运动员退役后做不了教练就是因为他平时不留意观察和总结的结果,很多优秀运动员也从来没想过转型做教练。所以可以看出:长时间的积累是一个真正优秀教练的铺路石。 2.健身教练三大来源 a)记者在采访中了解到,目前健身教练的来源主要有三部分组成,或者是健身俱乐部会员,由于成绩凸起,被升格为教练;或者是相关体育专业毕业生毕业后直接进入健身俱乐部;再有就是通过参加培训班,考到有关健身教练资格。 b)据了解,教练中的相当一部门是兼职。科班出身的有扎实的理论功底,但往往会显得缺少个性,而培训班出身的健身教练可能由于培训班的良莠不齐以及缺少同一的尺度而导致水准得不到保障。 c)某健身会所的工作职员说:“我们聘用的教练是需要证书的,什么证书无所谓,口试合格的就可以录用任教。”

组织结构设计案例分析报告

组织结构分析: 日产汽车起死回生和华为的危机感 (职业经理人十四期) 第七小组

组织结构设计案例分析: 如何设计组织结构 一、企业的大树模型 随着企业规模和管理幅度的不断扩大,企业有必要重新整合外部资源,系 统性地解决企业所面临的和将要面临的问题,由此构建了企业的大树模型。 其中,企业文化和发展战略是首要性的问题,它们犹如大树的根,决定了企 业能否持续健康地成长。由于企业文化可以为战略实施提供行为导向,企业理念 文化具有独特的激励功能,企业文化具有良好的约束功能,因此企业文化日益成 为战略实施的重要手段。企业文化必须与企业战略相互适应和协调。从战略实施 的角度来看,企业文化既要为实施企业战略服务,又可能成为制约企业战略实施 的因素。当企业新的战略要求企业文化与之相配合时,企业原有文化的变革速度 却往往较慢,很难马上对新战略做出反应,这时企业原有文化就可能成为实施企 业新战略的阻力,因此在战略管理过程中,企业部新旧文化更替和协调是战略 实施获得成功的保证。 在企业的具体问题中,组织结构是第一步要考虑的,它犹如大树的躯干,决 定了企业能否枝繁叶茂。营销、研发、生产、人力、总务、财务等共同构成了大树 的主枝,同时,将主枝间衔接起来的核心流程的流向又决定于组织结构。以做事 为主线,以各部门、科室、班组、员工为分枝,以岗位责任制(包含岗位工作指引)、标准作业书、操作规程、技术标准和管理办法等为叶。 从大树发展的角度来说,若根不够深、躯干不够粗,再好的树叶也会枯萎, 更不要说供应能量给大树了,那么,大树就不能正常生长。企业就好比一棵大树, 不断从土壤中汲取养分,经过严寒酷暑的考验,茁壮成长。 二、组织结构设计原则: 1、拔高原则 在为企业进行组织结构的重新设计时,必须遵循拔高原则,即整体设计应紧 扣企业的发展战略,充分考虑企业未来所要从事的行业、规模、技术以及人力资 源配置等,为企业提供一个几年相对稳定且实用的平台。

价值流程图

价值流程图(Value Stream Mapping,简称VSM) 价值流程图概述 价值流程图(Value Stream Mapping)是丰田精益制造(Lean Manufacturing)生产系统框架下的一种用来描述物流和信息流的形象化工具。它运用精益制造的工具和技术来帮助企业理解和精简生产流程。价值流程图的目的是为了辨识和减少生产过程中的浪费。浪费在这里被定义为不能够为终端产品提供增值的任何活动,并经常用于说明生产过程中所减少的“浪费”总量。VSM可以作为管理人员、工程师、生产制造人员、流程规划人员、供应商以及顾客发现浪费、寻找浪费根源的起点。从这点来说,VSM还是一项沟通工具。但是,VSM往往被用作战略工具、变革管理工具。 VSM通过形象化地描述生产过程中的物流和信息流,来达到上述工具目的。从原材料购进的那一刻起,VSM就开始工作了,它贯穿于生产制造的所有流程、步骤,直到终端产品离开仓储。 对生产制造过程中的周期时间、当机时间、在制品库存、原材料流动、信息流动等情况进行描摹和记录,有助于形象化当前流程的活动状态,并有利于对生产流程进行指导,朝向理想化方向发展。 VSM通常包括对“当前状态”和“未来状态”两个状态的描摹,从而作为精益制造战略的基础。 价值流程图(VSM)分析的是两个流程:第一个是信息(情报)流程,即从市场部接到客户订单或市场部预测客户的需求开始,到使之变成采购计划和生产计划的过程;第二个是实物流程,即从供应商供应原材料入库开始,随后出库制造、成品入库、产品出库,直至产品送达客户手中的过程。此外,实物流程中还包括产品的检验、停放等环节。 企业在进行价值流程图(VSM)分析时,首先要挑选出典型的产品作为深入调查分析的对象,从而绘制出信息(情报)流程和实物流程的现状图,然后将现状图与信息(情报)和实物流程的理想状况图相比较,发现当前组织生产过程中存在的问题点,进而针对问题点提出改进措施。

小米式组织架构案例分析

20150313】小米式组织架构案例分析 2015-04-09连昱天马帮 点击上方“天马帮”可以订阅哦!『天马一出谁与争锋』天马帮——互联网+第一商圈; 国内首家O2O教学模式,让您随心所欲学电商,游电商,玩电商; 并同千名传统企业老板一起开眼,壮胆,找同伴! 非常高兴再次跟天马帮的各位一起来探讨,互联网+的背景下面的手机变革。我的前一次课已经跟大家分析了互联网+的组织变革的一些具体的策略。我们先回顾一下上次课讲的主要的内容。上次课跟大家分享了互联网组织变革的三个主要的策略。首先,要以新的战略为导向,来打造扁平化的组织。第二,要根据现有的业务模式的更新,商业模式的创新来重现。在这个过程当中要重视人才的导向,探索多元化的激励手段。 今天我们更多来分享在“互联网+”的组织变革过程当中几个常见的案例。为什么传统企业需要改革。无论是传统行业,还是新兴行业,组织变革是不是需要的核心是对整个主营业务的成长空间和领先性的判断。组织究竟用什么样的形态,最重要的是看你的组织,在竞争当中所处的状态。过去我们的传统企业,在传统的经济形态下,拥有巨大的成长空间和领先性。但互联网带来的跨界融合和跨界竞争,打破了过去传统企业正常的市场空间和领先性。在原有的领先性无法表现而成长空间又不足的情况下,就面临到了当前大多数的传统企业所面临的转型困局。我们的企业是否需要变革,在一定层面上可以用一个简单的指标来衡量——平均增长率。如果企业每年的平均增长率低于当时的行业平均增长率,就需要考虑组织的变革。进行组织变革,不要过多考虑现在短期的盈亏情况,而是要把握当前这个行业的关键成功要素。“互联网+”的企业竞争其实就是用户选择权的竞争,而“互联网+”组织的目标,就是把企业和用户之间建立一个双向的交互平台。大家也可以看到,在小编发的图中,一个企业的组织是把企业的团队、研发、生产、供应链等等一些价值链的环节综合起来,呈现价值,传输给用户。在互联网的经济形态下,本质上是在探索如何和用户保持一个充分的双向交互的平台。

2018年健身行业分析报告

2018年健身行业分析 报告 2018年1月

目录 一、2018健身热持续,新机遇带来增长重启 (3) 1、健身行业概况:2020年预期登上千亿元大关 (3) 2、健身产业链:综合布局健身培训较多,互联网企业还需努力 (4) 二、“传统”健身业:和国际相比仍旧略慢一步 (4) 1、以美国为例:市场竞争激烈,商业模式由“大”变“小” (4) 2、国内线下健身房:仍以大型为主,收入结构还未优化 (6) 三、互联网新机遇:提前实现高阶需求,“小”也可以很“美” (7) 1、“颠覆”健身产业,互联网都对健身做了什么 (9) (1)纯线上企业:领先公司已经崭露头角 (10) (2)线上线下结合:不再是互联网企业单方努力,传统健身业正在谋取合作 (11) 2、行业风向:互联网与新技术牵头,重点在于挖掘产业深度价值 (12) 四、互联网是一个好去处,但还称不上“颠覆” (16) 1、市场空间测算:群众的力量总是巨大,互联网覆盖广泛有其优点 (16) 2、风险犹存:前浪已死在沙滩,后浪扑打之方需要再三考虑 (17)

一、2018健身热持续,新机遇带来增长重启 1、健身行业概况:2020年预期登上千亿元大关 2015年健身热情升温、公共健身设施、新型健身俱乐部等的出现使得商业健身行业重启快速增长。而2017年,热词“A4腰”、“马甲线”持续“霸屏”社交网络,健身这一大众运动不仅是各路明星圈粉的手段,更是年轻人群争相参与的活动之一。根据智研咨询发布的《2017-2022年中国健身房行业市场需求预测及投资前景分析报告》预计,未来五年有望保持12%的年复合增长率,到2020年将达到1230亿元。 2014年以来体育产业以超出政府预期的状态呈跨越式发展和政 策的利好不无关系:2014年“46号文”《国务院关于加快发展体育产业促进体育消费的若干意见》发布。2016年,更是有《“健康中国2030”规划纲要》和《关于加快发展健身休闲产业的指导意见》两条政策相继发布,强调重点发展全民健身及业余体育,引导社会资本参与健身休闲产业,到2025年健身休闲产业规模达到3万亿元。

组织结构案例分析

利民公司组织结构案例分析 案例的分析提示: 1.组织结构的类型:直线职能制2.组织结构的特点:这种组织结构以直线制为基础,综合了直线制和职能制组织的优点,在保证了直线组织统一指挥的原则下,增加了参谋机构,但骨干是直线部门,保持了直线制统一集中指挥,决策迅速的优点。具体来说它包含了直线关系、参谋和委员会,管理层次分明。 ?3.组织结构的优点:具有集中领导,便于调配人力、财力和物力;职责清楚,有利于提高办事效率;秩序井然,使整个组织有较高稳定性的优点。组织结构稳定性高,在外部环境变化不大的情况下,易于发挥组织的集团效率。适应于这样小型简单的企业。 ?4.组织结构的缺点:由于部门之间缺乏横向交流,增加了上级主管的协调工作量,组织内信息传递线路较长,反馈缓慢,不易迅速适应新情况,实际上仍然是典型的“集权式”管理。 ?这种结构当公司生产销售规模扩大以后或强调创新的企业来说就显的比较不合适了。 ?5.组织结构的优劣:总体上来说优大于劣,据了解,利民公司以前属于家族产业,职务几乎由家庭成员所担当,总经理为了便于自己对公司进行集中领导,有利于总经理实施控制和管理,所以对以前的组织结构进行改革。改革后的组织结构是典型的直线职能结构。克服了以血缘关系为基础的传统世袭组织类型,避免了多头领导、责权不明、管理层次混乱、管理跨度不合理的缺点。但是如何处理好家庭成员与普通职员的一些奖惩尺度需要特别留意。

案例分析:海尔的组织结构演变 海尔集团创立于1984年,17年来以年均增长78%的增长速度持续稳定发展,已发展成为在海内外享有较高美誉的大型国际化企业集团。产品从1984年的单一冰箱发展到如今的拥有白色家电、黑色家电、米色家电在内的86大门类13000多个规格的产品群,并出口到世界160多个国家和地区。2001年,实现全球营业额602亿元,实现出口创汇4.2亿美元,同比增长50%,是中国家电行业的第一名牌。其首席执行官张瑞敏曾先后登上美国的哈佛大学、沃顿商学院和哥伦比亚大学讲台,纵论“海尔圣经”。 在海尔的发展进程中,其组织结构也在不断调整,大的调整一年会有一两次,小的就更不必说了。张瑞敏认为,一个企业应建立一个有序的非平衡结构,一个企业如果是有序的平衡结构,这个企业就是稳定的结构,是没有活力的,但如果一个企业是无序的非平衡结构,肯定就是混乱的。我们在建立一个新的平衡时就要打破原来的平衡,在非平衡时再建立一个平衡。 海尔最早的组织结构是直线职能式结构,后来是矩阵结构,第三阶段就是市场链结构,其组织结构变迁如图1所示。 直线职能制结构就像一个金字塔。下面是最普通的员工,最上面是厂长、总经理,它的好处就是容易控制到终端。直线职能制结构如前所述,在企业小的时候,“一竿子抓到底”,反应非常快。但企业大了以后,这样就不行了,最大的弱点就是对市场反应太慢。这种结构在海尔发展的初期起了很大的作用,当时海尔内部局面混乱,纪律涣散,员工素质低,如果不采用这种组织结构,张瑞敏的领导魅力无法展现,海尔无法发展。到1996年,这种结构在海尔发展到了顶峰,于1996年海尔开始实行事业部制。其组织结构如图1所示。 这是一种分权结构的运作形式。在企业运作方式上,海尔集团采取“联合舰队”的运作机制。集团总部作为“旗舰”,以“计划经济”的方式协调下属企业。下属企业在集团内部

健身行业市场研究报告

健身行业市场研究报告 (内部资料稿) 泰实医疗 2019年12月

目录 第一部分健身产业概况 (4) 1.1 健身产业定义及产业链 (4) 1.2 健身产业主要政策汇总 (4) 第二部分全球健身市场现状 (5) 2.1 全球健身产业市场规模 (5) 2.2 全球主要国家健身产业情况 (5) 2.3 主要国家健身俱乐部数量 (6) 第三部分国内健身市场现状 (8) 3.1 中国健身产业发展特点 (8) 3.2 健身俱乐部数量 (8) 3.3 健身俱乐部会员数 (9) 3.4 健身器材收入规模 (9) 3.5 中国健身产业规模 (10) 第四部分国内企业竞争格局 (11) 4.1 信隆健康 (11) 4.2 舒华体育 (12) 4.3 威尔仕 (12) 4.4 一兆韦德 (12) 4.5 浩沙健身 (12) 第五部分未来发展趋势 (14) 5.1 健身产业规模预测 (14)

5.2 龙头企业市场份额提高 (14) 5.3 智能化健身趋势兴起 (14)

一、健身产业概况 随着我国人民健身意识的进一步提升和健身房商业模式的进一步成熟,我国健身产业发展迅速。2016年体育总局与国务院分别颁布《体育发展十三五规划》、《全民健身计划(2016-2020)》,提出到2020年,每周参加1次及以上体育锻炼的人数达7亿,经常参加体育锻炼的人数达4.35亿,体育消费总规模达1.5万亿元等,目标是把全民健身打造成国家名片。 (一)健身产业定义及产业链 健身除了体育含括的项目之外,还有很多内容,例如,写字、唱歌、做家务、瑜伽等。健身大致分为器械锻炼和非器械锻炼。狭义的健身是指以健身俱乐部/工作室为主要场所,并且通常借助体育器械进行锻炼的活动。 健身产业上游涉及健身器械、教练培训等,中游主要是各类健身服务,下游则是各类健身服装/装备等。 (二)健身产业主要政策汇总 随着我国经济社会的快速发展,越来越多的人注重运动健身。同时我国政府高度重视体育活动在增强体质、提高健康水平中的重要作用。 1995年,国务院颁布实施《全民健身计划纲要》; 2007年,国务院下发《关于加强青少年体育增强青少年体质的意见》; 2014年,国务院下发《关于加快发展体育产业促进体育消费的若干意见》; 2016年6月,为促进健身产业发展、增强全民身体素质,国务院印发《全民健身计划(2016—2020年)》。对发展群众体育活动、倡导全民健身新时尚、推进健康中国建设做出了明确部署; 2017年8月11日,针对中国居民参加体育健身活动状况实际,国家体育总局发布了《全民健身指南》。

(完整版)06059心理学研究方法复习题

心理学研究方法复习题 一、重要概念 1、研究的效度:即有效性,它是指测量工具或手段能够准确测出所需测量的心理特质的程度。 2、内部一致性信度:主要反映的是测验内部题目之间的信度关系,考察测验的各个题目是否测量了 相同的内容或特质。内部一致性信度又分为分半信度和同质性信度。 3、外推效度:实验研究的结果能被概括到实验情景条件以外的程度。 4、半结构访谈:半结构化访谈指按照一个粗线条式的访谈提纲而进行的非正式的访谈。该方法对访谈 对象的条件、所要询问的问题等只有一个粗略的基本要求,访谈者可以根据访谈时的实际情况灵活地做出必要的调整,至于提问的方式和顺序、访谈对象回答的方式、访谈记录的方式和访谈的时间、地点等没有具体的要求,由访谈者根据根据情况灵活处理。 5、混淆变量:如果应该控制的变量没有控制好,那么,它就会造成因变量的变化,这时,研究者选定 的自变量与一些没有控制好的因素共同造成了因变量的变化,这种情况就称为自变量混 淆。 6、被试内设计:每个被试接受接受自变量的所有情况的处理。 7、客观性原则:是指研究者对待客观事实要采取实事求是的态度,既不能歪曲事实,也不能主观臆断。 8、统计回归效应:在第一次测试较差的学生可能在第二次测试时表现好些,而第一次表现好的学生则 可能相反,这种情形称为统计回归效应.。统计回归效应的真正原因就是偶然因素变化导致的随机误差,以及仅仅根据一次测试结果划分高分组和低分组。 9、主体引发变量:研究对象本身的特征在研究过程中所引起的变量。 11、研究的信度:测量结果的稳定性程度。换句话说,若能用同一测量工具反复测量某人的同一种心理特质,则其多次测量的结果间的一致性程度叫信度,有时也叫测量的可靠性。 12、分层随机抽样:它是先将总体各单位按一定标准分成各种类型(或层);然后根据各类型单位数与总体单位数的比例,确定从各类型中抽取样本单位的数量;最后,按照随机原则从各类型中抽取样本。13、研究的生态效度:生态效度就是实验的外部效度,指实验结果能够推论到样本的总体和其他同类现象中去的程度,即试验结果的普遍代表性和适用性。 14、结构访谈:又称为标准化访谈,指按照统一的设计要求,按照有一定结构的问卷而进行的比较正式的访谈,结构访谈对选择访谈对象的标准和方法、访谈中提出的问题、提问的方式和顺序、访谈者回答的方式等都有统一的要求。 15、被试间设计:要求每个被试者(组)只接受一个自变量处理,对另一被试者(组)进行另一种处理。

我国健身器材行业发展概况

我国健身器材行业发展概况 (一)行业概述 1、市场容量与增长趋势 (1)体育产业迎来市场化发展的历史机遇 伴随我国经济发展进入新常态以及产业结构转型,体育产业作为新的经济增长动力之一对于国民经济的拉动作用得以凸显。国家也密集出台一系列的产业支持政策,推动体育产业的快速健康发展。 国家统计局数据显示,2012 -2015 年,我国体育产业总规模分别为9,500 亿元、11000 亿元、13575 亿元和17,107 亿元,各年实现增加值3,136 亿元、3,563 亿元、4,041 亿元和5,494 亿元,占当年GDP 比例分别为0.60%、0.63%、0.64% 和0.8%,体育产业规模年均增长率达到了22%。 从全球体育产业占GDP 的比重看,以美国、法国等为代表的体育强国,其体育产业占GDP 的比重均达到2.5%以上,全球平均水平亦达到了 2.1%,而我国该比例仅为0.8%左右,仍然具有较大的发展空间。 根据《体育发展“十三五”规划》、《体育产业发展“十三五”规划》以及国务院发布的《国务院关于加快发展体育产业促进体育消费的若干意见》,预计到2020 年,我国体育产业总规模将超过3 万亿元,产业增加值占GDP 的比重将达到 1.0%。2025 年,体育产业总规模将超过 5 万亿元,成为推动经济社会持续发展的重要力量。在国家产业政策的引导和支持下,我国体育产业迎来市场化发展的历史机遇。 (2)体育用品行业规模占体育产业整体规模一半以上 根据46 号文以及《国家体育产业统计分类》(2015 年)的界定,我国的体育产业主要包括产品制造和服务提供两大类,前者包括健身器材、运动服装、运动鞋等体育用品的制造,后者包括竞赛表演、健身休闲活动、场馆服务、中介培训、体育培训等。其中,体育用品行业是我国体育产业中发展较早,也是目前发展较为成熟的细分行业之一。

心理学研究方法复习资料

心理学研究方法复习资料 考试题型概念解释(5*4=20)、简答(3*8=24)、案例分析(4*10=40)、研究设计(1*16=16)。本资料包括老师提到的概念解释和简答,案例分析和研究设计来自于课本挑战性问题。本资料仅供参考。 名词解释: 1、研究假设(Hypothesis):是由理论所推衍出来的更为具体的预测,是针对研究问题提出的有待验证的、暂时性的、推测性的解答。 2、实验混淆(confounding):如果我们所设定的自变量其发生量的改变时,另一个已知或潜在的变量亦随之有量的改变,则这两个变量的作用就发生了相互混淆。 3、观察者间信度(interobserver reliability):指不同的独立的观察者针对同一观察所做记录的一致性程度。 4、便利抽样(convenience sampling):主要根据获得调查对象的容易程度和调查对象参加调查的意愿所进行的。便利抽样是所有取样技术中花费最小的,抽样单元是可以接近的、容易测量的,并且是可以合作的。便利取样是非随机抽样,所选取的样本缺乏代表性。 5、假相关(spurious relationship):如果两个变量间的关系可以通过第三个变量进行解释,那么这种关系就被称之为“假相关”。 6、操作定义(operational definition):指仅根据可观察的程度来解释概念,这个观察程度是来产生和测量概念的。即从具体的行为、特征、指标上对变量的操作进行描述,将抽象的概念转换成可观测、可检验的项目。 7、外部效度(external validity):是指研究结果能够一般化和普遍化到样本来自的总体和其他条件、时间、和背景中去的程度。 8、内部效度(internal validity):指实验中的自标量与因变量之间因果关系的明确程度。如果在试验中:当自变量发生变化时因变量随之发生改变,而自变量恒定时因变量则不发生变化,那么这个实验就具有较高的内部效度。内部效度与无关变量的控制有关。 9、交互作用(interaction effect):是指一个因子的效应依赖于另一个因子的不同水平,当一个自变量的效应在另一自变量的不同水平上存在差异时,就表示出现了交互作用。10、知情同意(informed consent):是被试在充分理解研究性质、不参加的后果、影响参加意愿的所有因素后,明确表达参加研究的意愿。 11、统计效力(power):指研究者在进行统计检验时,正确拒绝虚无假设的可能性,换言之,就是当存在真正效应时检验发现效应的概率。统计效力受到统计显著性水平、处理效应大小

运动健身器材行业分析报告

一、运动健身器材行业的概况 运动健身器材是竞技体育比赛和健身锻炼所使用的各种器械、装备及用品的总称。 运动健身器材主要有3种分类方法:依据体育运动的项目分类这是将所有与同一运动项目有关的器材和装备等归为一类的方法,如田径器材、举重器材、冰雪器材等。依据体育器材的性质分类一般可分为指定器材、自备器材、场地器材和其他器材等4类。依据体育器材的用途分类分为竞技体育器材、国防军事体育器材、中国民间体育器材、健身健美体疗康复器材、儿童体育游艺器材、伤残人竞技器材、辅助性器材等。 随着生活水平的提高,人们越来越注意身体健康和体型的美丽,为此在健美方面的投资也日益增加。未来欧洲、亚洲和拉丁美洲将是市场的主要增长点,逐渐富裕的人群将会提高自己对健康生活方式的追求,并将成为健身器材的主要消费者。 城市居民对体育用品的消费已经从低档为主向中高档方向发展,农村居民尤其是已经进入小康生活标准的农村地区,对中低档体育用品的消费也将逐步形成新的需求。随着农村地区收入的增加将使健身市场的潜力变成现实,中国健身器材市场的年销售额逐年增长,中国人对健康的关注正在形成个黄金市场。 二、运动健身器材所处生命周期位置 根据生命周期理论的销售增长率划分法:销售增长率大于

10%为成长期,0.1%-10%为投入期或成熟期,小于0则为衰退期,根据该理论我们对运动健身器材产业行业的发展做出如下推断: 行业处于成长期时,顾客成群增加,消费者开始注重产品质量和可靠性,企业开始竞争前扩张,准备积极应对竞争。已进入行业的企业拥有较高获利能力,但由于行业竞争者的进入,产品价格开始下降。运动健身行业正处于行业生命周期的成长阶段,是已进入企业扩张市场、抢占市场份额的最好时机。 三、运动健身器材行业的SWOT分析 S(竞争优势):中国有广大的市场,便宜的人力资源和原材料市场,及政府的各种优惠政策,中国处于高速发展的

流程程序分析在顺丰快件操作流程中的应用

流程程序分析在顺丰收件流程中优化的应用 李小韬08物流1班08513168 一、背景分析 此次作业的选题来自“SF杯”第三届全国大学生物流设计大赛案例。顺丰快件操作流程包括快件收发、快件中转、快件派送三大环节,其中括快件收发包括下单流程、收件流程、发件流程;快件中转环节包括中转流程、出港流程、出口关务流程、国际转运流程、进口关务流程、进港流程;快件派送环节包括到件流程、派件流程。 在这三大环节的11个主流程中,收件和派件流程是快件操作流程的重点流程,现在对收件流程做流程程序分析: 收件流程,是指收派员从接受订单到上门收取快件、填单、快件检查、做件、巴枪扫描并将快件运回分点部的过程。在此流程中收派员用到的设备有手持终端(HHT),它用于接受订单信息、订单的实时处理、可查询服务范围、快件价格等基本信息。案例中提供的收件流程如图1所示: 图1:收件流程图 二、收件操作流程分析 在顺丰快件操作流程快件收发环节中,收件流程基于下单流程和发件流程之间。 1、通过对收件流程的分析,可以确定其拥有12个步骤:收件准备、确认订单、上门收件、资料检查、货件检查、运单填写、货件包装、称重计费、快件做件、运费收取、终端扫描上传、交件交单

交款。 2、通过对其进行“5W 1H”的提问,根据“EQRS”原则分析,可以得出如下结论:必须的步骤有收件准备、上门收件、快件检查、货件处理、快件做件、运费收取、巴枪扫描、快件运回;没有可取消的步骤;但可以整合的是将收件准备、确认订单整合为收件准备,将资料检查、货件检查整合为快件检查,将货件包装、称重计费整合为货件处理;将订单填写重排在称重计费后,再将其与快件合并为快件做件;订单填写步骤简化,在货件处理完毕后,收派员开始用手持终端(HHT)设备对货件进行做件,收派员将运单信息直接录入到HHT后,然后对货件做件。 3.优化效果与之前收件流程对比如图所示。可以把收件流程简化为8个步骤:收件准备、上门收件、快件检查、货件处理、快件做件、运费收取、终端扫描上传、快件运回。 4.优化对比如表1。 表:

相关主题
文本预览
相关文档 最新文档