当前位置:  编程技术>移动开发
本页文章导读:
    ▪导入图片到图片添 以及 搜索音乐        导入图片到图片加 以及 搜索音乐 1. String filename = String.valueOf(System.currentTimeMillis()) ;ContentValues values = new ContentValues(); values.put(Images.Media.TITLE, filename);values.put(Images.Media.DATE_ADDED, System.currentTim.........
    ▪ M3G课程:进阶篇(二)灯光        M3G教程:进阶篇(二)灯光   灯光(Lighting) java.lang.Object  +-javax.microedition.m3g.Object3D    +-javax.microedition.m3g.Transformable      +-javax.microedition.m3g.Node        +-javax.microedition.m3g.Light       在.........
    ▪ 手机流媒体技术梗概       手机流媒体技术概要 1 手机流媒体的定位        流媒体简单来说就是应用流技术在网络上传输的多媒体文件;而流技术就是把连续的影象和声音信息经过压缩处理后放上网站服务器,让.........

[1]导入图片到图片添 以及 搜索音乐
    来源: 互联网  发布时间: 2014-02-18
导入图片到图片加 以及 搜索音乐

1.

String filename = String.valueOf(System.currentTimeMillis()) ;

ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, filename);
values.put(Images.Media.DATE_ADDED, System.currentTimeMillis());
values.put(Images.Media.MIME_TYPE, "image/jpeg");

Uri uri = context.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
try {
OutputStream outStream = context.getContentResolver().openOutputStream(uri);
mBitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
outStream.flush();
outStream.close();
Log.d("done","done");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
2.

public class Main extends ListActivity {
  private Cursor audioCursor;

  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    audioCursor = this.managedQuery(Audio.Media.EXTERNAL_CONTENT_URI,
        null, null, null, null);
    startManagingCursor(audioCursor);

    String[] columnsToMap = new String[] {Audio.Media.TITLE ,
                                          Audio.Media._ID};
    int[] mapTo = new int[] {android.R.id.text1,android.R.id.text2};

    ListAdapter mAdapter = new SimpleCursorAdapter(this,
        android.R.layout.two_line_list_item ,
        audioCursor, columnsToMap, mapTo);
    this.setListAdapter(mAdapter);
  }
}


    
[2] M3G课程:进阶篇(二)灯光
    来源: 互联网  发布时间: 2014-02-18
M3G教程:进阶篇(二)灯光

 

灯光(Lighting)

java.lang.Object

 +-javax.microedition.m3g.Object3D

   +-javax.microedition.m3g.Transformable

     +-javax.microedition.m3g.Node

       +-javax.microedition.m3g.Light

      在一个没有光线的房间中,所有的东西看上去都是黑的。那么前面的示例中没有光线,怎么还能看到东西呢?顶点颜色和材质是不需要光线的,它们永远显示为定义好的颜色。但光线会使它们发生一些变化,可增加景深。

      光线的方向会根据对象的位置发生反射。如果您用手电筒垂直地照射您面前的镜子,那么光线会反射到您身上。如果镜子是倾斜的,则光线的入射角和反射角是完全相同的。总的来说,您需要一个与照射平面相垂直的方向向量。这一向量就称为法线向量 或简称为法线。M3G 会根据法线、光源位置和摄像机位置计算着色的情况。

      此外,法线是各顶点都具备的属性,各顶点之间的像素着色既可采用插值法(PolygonMode.SHADE_SMOOTH)也可从三角形的第三个顶点处选取(PolygonMode.SHADE_FLAT)。由于立方体有 8 个顶点,支持法线的方法之一就是指定从立方体中心指向各角的向量,如图 7a 所示。但这样做可能会导致立方体着色不当。有三个面的颜色可能会相同,其中有些边成为不可见状态,使立方体看上去缺乏棱角。这显然更适合球体,不太适合立方体。图 7b 展示了如何为每边使用 4 条法线 —— 共 24 条,从而创建棱角分明的边线。由于一个顶点只能有一条法线,所以还要复制顶点。

 

图 7.带有法线向量的立方体:a) 8 条法线;b) 24 条法线(每边 4 条)

 

 

      可使用法线计算光线后,还需要告诉 M3G 您需要什么类型的光线。光线来源于不同形式:灯泡、太阳、手电筒等等。在 M3G 中的对应术语分别为全向光、定向光和聚光。

  • 全向光是从一个点发出的,并平均地照射各个方向。没有灯罩的灯泡发出的就是这样的光。
  • 定向光向一个方向发出平行的光线。太阳离我们的距离非常远,所以可以将其光线视为平行的。定向光没有位置,只有方向。
  • 手电筒或剧场中使用的聚光灯发射出的光线就是聚光。其光线呈锥形,与圆锥相交的平面上的对象会被照亮。

      在真实世界中,光线还会从对象上反射回来而将周围照亮。如果您打开卧室灯,就会发现即便没有能直接照射到床底下的光线,但床下仍会被照亮。Raytracer 通过追踪从摄像机到光源的路径而清晰真实地展示了图像,但需要很长时间。要获得交互式帧频,必须满足一个简单的模型:环境光。环境光以不变的频率从各方向照亮对象。您可以用环境光模拟前面的卧室场景,将所有对象都照亮到一定程度,从而提供了另外一个全向光源。

Light.OMNI:全向光

Light.SPOT:聚光

Light.AMBIENT:环境光

Light.DIRECTIONAL:定向光

 

 

材质(Material)

An Appearance component encapsulating material attributes for lighting computations. Other attributes required for lighting are defined in Light, PolygonMode and VertexBuffer.

 

The diagram below illustrates how the final, lit color is obtained for a vertex. Lighting is disabled for a submesh if it has a null Material, and enabled otherwise. If lighting is disabled, the final vertex color is taken from the associated VertexBuffer as such. If lighting is enabled, the final color is computed according to the OpenGL 1.3 lighting equation (p. 48), using the material colors specified here. Finally, if vertex color tracking is enabled, the AMBIENT and DIFFUSE material colors are replaced with the per-vertex colors or the default color obtained from the VertexBuffer.

Lighting is computed according to the OpenGL 1.3 specification, section 2.13.1, with the following exceptions:

  • the secondary color is not supported;
  • the same Material is used for both the front face and the back face;
  • vertex color tracking is limited to AMBIENT_AND_DIFFUSE;
  • for an ambient Light, the diffuse and specular intensities are zero;
  • for a directional or positional Light, the ambient intensity is zero;
  • the diffuse and specular Light intensities can not be set separately;
  • the global scene ambient color acs is not supported;

Diffuse:漫反射,反射光均匀地分散到各个方向。

Ambient:环境反射,由环境光源反射的光线。

Emissive:放射光,一个像炽热的物体那样发射光线的对象。

Specular:镜面反射,光线从有光亮平面的对象反射回来。

      环境反射仅对环境光起作用,因此,使用全向光是无效的。漫反射材质组件会造成一种不光滑的表面,而放射光组件则制造出一种发光效果。镜面反射颜色组件强调了发亮的效果。此外,您还可以通过使用更多的三角形改进明暗对比的着色质量。

可以使用 Material.setVertexColorTrackingEnable() 为环境反射和漫反射使用顶点颜色,不必使用Material.setColor()

 

转换(Transform)

      本示例中使用了Transform将摄影机向后移动以便全方位观看圆环,通过同样的方式我们也可以操作任意的Object3D对象。

      您可以通过数学方式将转换表示为矩阵操作。一个向量 —— 例如,摄像机位置 —— 乘以恰当的平移矩阵从而得到相应移动的向量。Transform 对象就表示了这样的一个矩阵。对于绝大多数普通转换来说,M3G 提供了 3 种便于使用的接口,隐藏了底层的数学计算:

  •  Transform.postScale(float sx, float sy, float sz):在 x、y、z 方向伸缩 3D 对象。大于 1 的值将按照给定因数扩大对象;0 和 1 之间的值将缩小对象。负值则同时执行伸缩和镜像操作。
  • Transform.postTranslate(float tx, float ty, float tz):通过为 x、y 和 z 坐标增加指定值移动 3D 对象。负值则表示向负轴方向移动对象。
  • Transform.postRotate(float angle, float ax, float ay, float az):按给定角度绕穿过(0,0,0)和(ax,ay,az)的轴旋转对象。角度为正值,则表示若您顺着正旋转轴方向观察,对象是按顺时针旋转的。例如,postRotate(30, 1, 0, 0) 将绕 x 轴将对象旋转 30 度。

      所有操作名都是以 "post" 开头的,表示当前 Transform 对象是从右边与给定转换矩阵相乘的 —— 矩阵操作的顺序是非常重要的。如果您向右旋转 90 度,然后走两步,这时您所处的位置显然与先走两步再转身不同。您可以在各步行指令之后调用两个 post 方法 postRotate() 和 postTranslate(),从而获得上面的步行指令。调用顺序决定了所获得的步行指令。由于使用的是后乘,所以您最后使用的转换会首先应用。

      M3G 有一个 Transform 类和一个 Transformable 接口。所有快速模式的 API 均可接受 Transform 对象作为参数,用于修改其关联的 3D 对象。另外,在保留模式下使用 Transformable 接口来转换作为 3D 世界一部分的节点。

 

A generic 4x4 floating point matrix, representing a transformation. By default, all methods dealing with Transform objects operate on arbitrary 4x4 matrices. Any exceptions to this rule are documented explicitly at the method level.

Even though arbitrary 4x4 matrices are generally allowed, using non-invertible (singular) matrices may produce undefined results or an arithmetic exception in some situations. Specifically, if the modelview matrix of an object is non-invertible, the results of normal vector transformation and fogging are undefined for that object.

 

import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.m3g.Appearance;
import javax.microedition.m3g.Camera;
import javax.microedition.m3g.Graphics3D;
import javax.microedition.m3g.IndexBuffer;
import javax.microedition.m3g.Light;
import javax.microedition.m3g.Material;
import javax.microedition.m3g.Mesh;
import javax.microedition.m3g.PolygonMode;
import javax.microedition.m3g.Transform;
import javax.microedition.m3g.TriangleStripArray;
import javax.microedition.m3g.VertexArray;
import javax.microedition.m3g.VertexBuffer;
import javax.microedition.m3g.World;


public class M3GCanvas extends GameCanvas implements Runnable {
	
	public static final int FPS = 20;	//每秒绘制的帧数

	private Graphics3D g3d;
	private World world;
	private boolean runnable=true;
	private Thread thread;
	private Mesh mesh;
	private Camera camera;
	private Light light;
	private Material material;

	protected M3GCanvas() {
		super(false);
		setFullScreenMode(true);
		g3d = Graphics3D.getInstance();
		world = new World();
		
		camera = new Camera();
		world.addChild(camera);
		
		float w = getWidth();
		float h = getHeight();
		camera.setPerspective(60.0f, w / h, 0.1f, 80f);
		
		Transform cameraTransform = new Transform();
		cameraTransform.postTranslate(0.0f, 15.0f, 10.0f);
		camera.setTransform(cameraTransform);
		camera.setOrientation(-10,1,0,0);
		
		mesh = createCube();
		mesh.translate(0.0f, 0.0f, -50.0f);
        
        light=new Light();
        nextLightMode(light);
        Transform lightTransform = new Transform();
        lightTransform.postTranslate(0.0f, 0.0f, -4.5f);
        light.setOrientation(-30,1,0,0);
//        light.setOrientation(30,0,1,0);
        light.setColor(0xFFFFFF);
        g3d.resetLights();
        g3d.addLight(light,lightTransform);
        
        world.addChild(light);
        
        world.addChild(mesh);
        world.setActiveCamera(camera);
	}

	public void run() {
		Graphics g = getGraphics();
		while (runnable) {
			long startTime = System.currentTimeMillis();
			
			mesh.postRotate(1.0f, 0.0f, 1.0f, 0.0f);
			
			try {
//				g3d.bindTarget(g);
				g3d.bindTarget(g, true, Graphics3D.DITHER | Graphics3D.TRUE_COLOR);
				g3d.render(world);
			} finally {
				g3d.releaseTarget();
			}
			g.setColor(0xFF00FF);
            g.drawString("material:"+materailInfo, 10, 10, Graphics.LEFT|Graphics.TOP);
            g.drawString("light:"+lightInfo, 10, 30, Graphics.LEFT|Graphics.TOP);
			flushGraphics();
			
			long endTime = System.currentTimeMillis();
            long costTime = endTime - startTime;
            if(costTime<1000/FPS)
            {
                try{
                  Thread.sleep(1000/FPS-costTime);
                }
                catch(Exception e){
                   e.printStackTrace();
                }
            }
		}
		System.out.println("Canvas stopped");

	}
	
	public void start()
	{
		thread=new Thread(this);
		thread.start();
	}
	
	public void stop()
	{
		this.runnable=false;
		try {
			thread.join();
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}
	
	protected void keyPressed(int keyCode) {
		switch(keyCode)
		{
		case KEY_NUM2:
			nextMaterial();
			break;
		case KEY_NUM4:
			nextLightMode(light);
			break;
		case KEY_NUM6:
		case KEY_NUM8:
		}
	}
	
	private int materialTypeIndex=0;
	private String materailInfo=null;
	private void nextMaterial()
	{
		materialTypeIndex++;
		materialTypeIndex=(materialTypeIndex+4)%4;
		switch(materialTypeIndex)
		{
		case 0:
			material.setColor(Material.EMISSIVE, 0x00FF0000);
			materailInfo="EMISSIVE";
			System.out.println("use material:EMISSIVE");
			break;
		case 1:
			material.setColor(Material.AMBIENT, 0x00FF0000);
			materailInfo="AMBIENT";
			System.out.println("use material:AMBIENT");
			break;
		case 2:
			material.setColor(Material.DIFFUSE, 0x00FF0000);
			materailInfo="DIFFUSE";
			System.out.println("use material:DIFFUSE");
			break;
		case 3:
			material.setColor(Material.SPECULAR, 0x00FF0000);
			materailInfo="SPECULAR";
			System.out.println("use material:SPECULAR");
			break;
		}
		
	}
	
	private int modeIndex=0;
	private String lightInfo=null;
	protected void nextLightMode(Light light)
	{
		modeIndex++;
		modeIndex=(modeIndex+4)%4;
		switch (modeIndex)
		{
	    case 0:
	    	light.setMode(Light.AMBIENT);
	        light.setIntensity(1.0f);
	        lightInfo="AMBIENT";
	        System.out.println("use light mode:AMBIENT");
	        break;
	    case 1:
	        light.setMode(Light.DIRECTIONAL);
	        light.setIntensity(1.0f);
	        lightInfo="DIRECTIONAL";
	        System.out.println("use light mode:DIRECTIONAL");
	        break;
	    case 2:
	        light.setMode(Light.OMNI);
	        light.setIntensity(1.0f);
	        lightInfo="OMNI";
	        System.out.println("use light mode:OMNI");
	        break;
	    case 3:
	        light.setMode(Light.SPOT);
	        light.setSpotAngle(45.0f);
	        light.setIntensity(2.0f);
	        lightInfo="SPOT";
	        System.out.println("use light mode:SPOT");
	        break;
	   }
	}
	
	private Mesh createCube(){
		
		short[] vert = { 10, 10, 10, -10, 10, 10, 10, -10, 10, -10, -10,10, // front
				-10, 10, -10, 10, 10, -10, -10, -10, -10, 10, -10, -10, // back
				-10, 10, 10, -10, 10, -10, -10, -10, 10, -10, -10, -10, // left
				10, 10, -10, 10, 10, 10, 10, -10, -10, 10, -10, 10, // right
				10, 10, -10, -10, 10, -10, 10, 10, 10, -10, 10, 10, // top
				10, -10, 10, -10, -10, 10, 10, -10, -10, -10, -10, -10 }; // bottom
		VertexArray vertArray = new VertexArray(vert.length / 3, 3, 2);
		vertArray.set(0, vert.length / 3, vert);
		byte[] norm = { 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0,
				-127, 0, 0, -127, 0, 0, -127, 0, 0, -127, -127, 0, 0, -127,
				0, 0, -127, 0, 0, -127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
				0, 127, 0, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0, 0, 127, 0,
				0, -127, 0, 0, -127, 0, 0, -127, 0, 0, -127, 0 };
		VertexArray normArray = new VertexArray(norm.length / 3, 3, 1);
		normArray.set(0, norm.length / 3, norm);
		int[] stripLen = { 4, 4, 4, 4, 4, 4 };
		IndexBuffer indexBuffer = new TriangleStripArray(0, stripLen);
		VertexBuffer vertexBuffer = new VertexBuffer();
		vertexBuffer.setPositions(vertArray, 1.0f, null);
		vertexBuffer.setNormals(normArray);
		Appearance cubeAppearance = new Appearance();
		PolygonMode pm = new PolygonMode();
        pm.setShading(PolygonMode.SHADE_SMOOTH);
        pm.setCulling(PolygonMode.CULL_NONE);

        material = new Material();
        nextMaterial();

        Appearance app = new Appearance();
        app.setPolygonMode(pm);
		cubeAppearance.setMaterial(material);
		Mesh mesh = new Mesh(vertexBuffer, indexBuffer, cubeAppearance);
		return mesh;
	}

}

 

运行结果如下:

 

本文部分内容引用自:http://dev.csdn.net/develop/article/80/80828.shtm


    
[3] 手机流媒体技术梗概
    来源: 互联网  发布时间: 2014-02-18
手机流媒体技术概要
1 手机流媒体的定位

       流媒体简单来说就是应用流技术在网络上传输的多媒体文件;而流技术就是把连续的影象和声音信息经过压缩处理后放上网站服务器,让用户一边下载一边观看、收听,而不需要等整个压缩文件下载到自己机器后才可以观看的网络传输技术。

       在gprs和CDMA网络中,就可以运营手机流媒体业务。最主要的目标是做到边下载边播放,缩短等待时间。

       一般意义的手机流媒体业务是在3G网络中存在的。它最主要的目标是节省手机的磁盘空间。

2 手机流媒体的关键技术

       采集:其实是所有过程中最耗费精力的一个步骤,如何采集,采集谁,是否授权这些问题我们都应该考虑到。我们目前的专业视频采集设备在功能上可以采集:有限电视,电台广播,摄像头,家用DV等等。

      

       压缩:手机流媒体与大众流媒体不同,他受限于联通网络的传输速度,虽然目前中国联通CDMA 1X网络能支持133k/秒的传播速度,但是在真正的实施过程中,如果要使用户进行流畅的观看,后期的压缩技术是必不可少的。

 

       传输控制:我们知道一般的视频每秒的桢数都在50桢左右,在目前的网络环境下,如果保持流畅的观看,必须首先将桢数控制在10桢以下,并对画面进行优化。

 

       Cache: 该技术先在使用者端的电脑上创造一个缓冲区,于播放前预先下载一段资料作为缓冲,于网路实际连线速度小于播放所耗用资料的速度时,播放程序就会取用这一小段缓冲区内的资料,避免播放的中断,也使得播放品质得以维持。

 

       发布:发布的过程其实就是一个传输过程,只要安装了流媒体服务器特定的客户端软件就能将压缩好的流媒体文件上传至服务器端。

 

3 手机流媒体的传输技术

    流媒体的主要技术特征就是采用流式传输,即通过Internet 将影音节目传送到PC机。实现流式传输有两种方法:顺序流式传输(Progressive streaming)和实时流式传输(Real-time streaming)。

  1. 顺序流式传输

顺序流式传输采用顺序下载方式,用户可以观看在线媒体节目。但是在给定时刻,用户只能观看已下载的那部分,而不能跳到还未下载的前序部分;它不能根据用户的连接速度做调整。由于标准的HTTP服务器可发送这种形式的文件,而不需要其他特殊协议,它经常被称作HTTP流式传输;顺序流式传输方式适合高质量的短片段,如片头、片尾和广告,媒体文件在播放前观看的部分是无损下载的,QoS高;顺序流式文件放在标准HTTP 或 FTP服务器上,易于管理,基本上与防火墙无关。顺序流式传输不适合长片段和有随机访问要求的视频、讲座、演说与演示,它也不支持现场广播。严格说来,它是一种点播技术。

根据本人的3G开发测试经验,在目前实际环境下,顺序流式传输一般只能无损传输50k以下的音频文件。(wav)

  2.实时流式传输

  实时流式传输保证媒体信号带宽与网络连接相匹配,使媒体可被实时观看到。实时流与HTTP流式传输不同,需要专用的流媒体服务器与传输协议。实时流式传输特别适合现场事件,也支持随机访问,用户可快进或后退以观看前面或后面的内容。理论上,实时流一经播放就可不停地收看,但实际上,可能会发生周期暂停。

  3.二者比较

  (1)从视频质量上讲,实时流式传输必须匹配连接带宽,由于出错丢失的信息被忽略掉,网络拥挤或出现问题时,视频质量会很差;如欲保证视频质量,顺序流式传输更好。

(2)实时流式传输需要特定流媒体服务器,如QuickTime Streaming Server、Real Server与Windows Media Server,这些服务器允许对媒体发送进行更多级别的控制,因而系统设置、管理比标准HTTP服务器更复杂。

火墙时有时会出现问题,导致用户不能看到一些地点的实时内容;而顺序流式传输与防火墙无关。

4 流媒体传输的网络协议

       TCP需要较多的开销,故不太适合传输实时数据;流式传输一般采用HTTP/TCP(RTCP)来传输控制信息,而用RTP/UDP(RTP)来传输实时声音数据。

      

(1) 实时传输协议RTP

  实时传输协议RTP被定义为在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步;RTP通常使用UDP来传送数据;当应用程序开始一个RTP会话时将使用两个端口:一个给RTP,一个给RTCP。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,也不提供流量控制或拥塞控制,它依靠RTCP提供这些服务;通常RTP算法并不作为一个独立的网络层来实现,而是作为应用程序代码的一部分。

  

(2)实时传输控制协议RTCP

  实时传输控制协议RTCP和RTP一起提供流量控制和拥塞控制服务;在RTP会话期间,各参与者周期性地传送RTCP包;RTCP包中含有已发送的数据包的数量、丢失的数据包数量等统计资料,因此,服务器可以利用这些信息动态地改变传输速率,甚至改变有效载荷类型。

  RTP和RTCP配合使用,它们能以有效的反馈和最小的开销使传输效率最佳化,因而特别适合传送网上的实时数据。

  

(3)实时流协议RTSP

实时流协议RTSP定义了一对多应用程序如何有效地通过IP网络传送多媒体数据;RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或RTP完成数据传输;HTTP与RTSP相比,HTTP传送HTML超链接文档,而RTSP传送的是多媒体数据;HTTP请求由客户机发出,服务器做出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。

点对点的手机可视通话,必须在手机终端实现RTSP。

5 流媒体服务器竞争的公司

    其实流媒体文件有很多种类型,只要采用流媒体技术的均可称之为流媒体。比如Macromedia公司的SWF(Shock Wave Flash)、Vivo公司的VIV(Vivo Movie)都是流媒体格式。现在最为流行的流媒体要数微软、Real Networks和Apple公司。表1-1罗列了这三家公司的所有流媒体格式的类型。

公司

文件格式

媒体类型

微软

ASF(Advanced Stream Format)

Video/x-ms-asf

Real Networks

RM(Real Video)

Application/x-pn-realmedia

RA(Real Audio)

Audio/x-pn-realaudio

RP(Real Pix)

Image/vnd.rn-realpix

RT(Real Text)

Text/vnd.rn-realtext

Apple

MOV(QuickTime Movie)

Video/quicktime

QT(QuickTime Movie)

Video/quicktime

表1-1

6 联通的手机流媒体业务

现在正式运营的有3种方式的手机流媒体业务,平台均在总部,总部统一运营。

1、神奇宝典掌上电视类业务:
  目前有一些BREW的高端手机支持该业务,用户在神奇宝典上下载一个播放器软件后,可以通过该播放器软件观看由CP提供的业务。用户手机通过神奇宝典方式上网。该业务由联通和高通的合资公司博路公司负责运营。详细资料请访问http://www.myuni.com.cn/
  目前支持手机:三星W109、三星E159、三星W209、三星W219、三星W299、三星W309、摩托罗拉A860、LG C910、LG C930、LG C950、浪潮LC7150。

要下载软件安装软件。基本使用方式和kjava类同,不过一般的SP进不了该市场,一般是媒体类SP进入该市场。


  2、联通新时讯的流媒体业务(PDA版的视讯新干线):
  目前支持该业务的终端只有一款大显CU928。用户手机通过掌中宽带方式上网,用户的登录名和密码:CARD、CARD。该业务的运营由该业务由联通下属的全资子公司联通新时讯公司独立负责。详细资料请访问http://www.u-web.cn
  支持手机:大显CU928
  3、wap方式的流媒体业务(手机版的视讯新干线):


  总部的视讯新干线业务是联通公司基于CDMA1X网络,为与对手展开差异化竞争而推出和互动视界、彩E、神奇宝典等并列的又一业务子品牌。用户的登录名和密码:WAP2、WAP2。该业务由总部增值业务部负责运营。详细资料请访问http://www.myuni.com.cn/
  支持手机:LG C950、LG-C260、LG-C270、LG-C960、三星SCH-E159、三星M299、三星I539
  WAP方式不需要下载客户端。这些手机已经有了播放软件。如果没有,需要另外下载一个播放软件;或者在手机browser中内置一个player。

----------------------

参考URL:

http://www.sd.chinaunicom.com/city/weifang/tsyw/file5.html

http://www.9192.net/new/article.asp?id=607

http://www.mogood.com/tec_show.asp?id=147


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3