19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
20554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru * Copyright (C) 2011 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.mediaframeworktest;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.app.Activity;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.AssetFileDescriptor;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Color;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.media.MediaPlayer;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Bundle;
2785305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lauimport android.os.PowerManager;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.provider.Downloads;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log;
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.KeyEvent;
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.Menu;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.SurfaceHolder;
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.SurfaceView;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View.OnClickListener;
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.View;
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.ViewGroup;
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.Button;
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.EditText;
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.MediaController;
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.VideoView;
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport com.android.mediaframeworktest.MediaNames;
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
440554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.graphics.Bitmap;
450554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguruimport android.widget.ImageView;
460554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.File;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileDescriptor;
49c060d86f7dcc2759b94867e5c0c1105b31af5309Gloria Wangimport java.net.InetAddress;
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
51c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi
5285305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Laupublic class MediaFrameworkTest extends Activity implements SurfaceHolder.Callback {
53c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    //public static Surface video_sf;
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static SurfaceView mSurfaceView;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private MediaController mMediaController;
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String urlpath;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private MediaPlayer mpmidi;
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private MediaPlayer mpmp3;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private String testfilepath = "/sdcard/awb.awb";
61c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static AssetFileDescriptor midiafd;
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public static AssetFileDescriptor mp3afd;
64c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi
650554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public static Bitmap mDestBitmap;
660554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru    public static ImageView mOverlayView;
6785305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    private SurfaceHolder mSurfaceHolder = null;
6885305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    private String TAG = "MediaFrameworkTest";
6985305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    private PowerManager.WakeLock mWakeLock = null;
7085305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public MediaFrameworkTest() {
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /** Called when the activity is first created. */
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void onCreate(Bundle icicle) {
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.onCreate(icicle);
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setContentView(R.layout.surface_view);
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mSurfaceView = (SurfaceView)findViewById(R.id.surface_view);
800554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mOverlayView = (ImageView)findViewById(R.id.overlay_layer);
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        ViewGroup.LayoutParams lp = mSurfaceView.getLayoutParams();
8285305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        mSurfaceHolder = mSurfaceView.getHolder();
8385305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
8485305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        mSurfaceHolder.addCallback(this);
85c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //Get the midi fd
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        midiafd = this.getResources().openRawResourceFd(R.raw.testmidi);
88c6cedc84f49b8b72d32069cfa515a51b8c128cc0Jason Noguchi
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        //Get the mp3 fd
909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        mp3afd = this.getResources().openRawResourceFd(R.raw.testmp3);
910554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mOverlayView.setLayoutParams(lp);
920554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mDestBitmap = Bitmap.createBitmap((int)640, (int)480, Bitmap.Config.ARGB_8888);
930554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru        mOverlayView.setImageBitmap(mDestBitmap);
9485305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau
9585305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        //Acquire the full wake lock to keep the device up
9685305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
9785305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "MediaFrameworkTest");
9885305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        mWakeLock.acquire();
999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
10085305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau
101c7fb118d90e92a26794257e837018b8c1cb15673Marco Nelissen    @Override
102c7fb118d90e92a26794257e837018b8c1cb15673Marco Nelissen    public void onDestroy() {
103c7fb118d90e92a26794257e837018b8c1cb15673Marco Nelissen        super.onDestroy();
10485305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        mWakeLock.release();
10585305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    }
10685305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau
10785305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    public void surfaceDestroyed(SurfaceHolder holder) {
10885305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        //Can do nothing in here. The test case will fail if the surface destroyed.
10985305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        Log.v(TAG, "Test application surface destroyed");
11085305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        mSurfaceHolder = null;
11185305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    }
11285305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau
11385305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
11485305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        //Do nothing in here. Just print out the log
11585305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau        Log.v(TAG, "Test application surface changed");
11685305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    }
11785305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau
11885305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    public void surfaceCreated(SurfaceHolder holder) {
11985305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau    }
12085305f04d52e921de0452a1efef01175b1bbac3cYu Shan Emily Lau
1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public void startPlayback(String filename){
1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      String mimetype = "audio/mpeg";
1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      Uri path = Uri.parse(filename);
1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      Intent intent = new Intent(Intent.ACTION_VIEW);
1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      intent.setDataAndType(path, mimetype);
1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project      startActivity(intent);
1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
128c060d86f7dcc2759b94867e5c0c1105b31af5309Gloria Wang
129c060d86f7dcc2759b94867e5c0c1105b31af5309Gloria Wang  public static boolean checkStreamingServer() throws Exception {
130c060d86f7dcc2759b94867e5c0c1105b31af5309Gloria Wang      InetAddress address = InetAddress.getByAddress(MediaNames.STREAM_SERVER);
131c060d86f7dcc2759b94867e5c0c1105b31af5309Gloria Wang      return address.isReachable(10000);
132c060d86f7dcc2759b94867e5c0c1105b31af5309Gloria Wang  }
1330554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1340554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru  public static void testInvalidateOverlay() {
1350554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru      mOverlayView.invalidate();
1360554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru  }
1370554f32afd5309344b8d0ddcebd5ff7bc6ae3410Basavapatna Dattaguru
1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
139