Android Open Source - EasyCast Main Activity






From Project

Back to project page EasyCast.

License

The source code is released under:

Apache License

If you think the Android project EasyCast listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright 2014 Parth Sane//from w  w  w.  ja  v a  2 s.  c o  m
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
   limitations under the License.
 */

package com.laer.easycast;

import android.annotation.SuppressLint;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.util.TypedValue;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

import java.io.IOException;

import javax.jmdns.JmDNS;
import javax.jmdns.ServiceEvent;
import javax.jmdns.ServiceListener;

@SuppressWarnings("deprecation")
public class MainActivity extends FragmentActivity {


    final static String TAG = "Open Airplay";
    final static private String type = "_airplay._tcp.local.";
    public String URL;
    // private ServiceInfo serviceInfo;
    android.net.wifi.WifiManager.MulticastLock lock;
    android.os.Handler handler = new android.os.Handler();
    boolean isfound = false;
    private JmDNS jmdns = null;
    private ServiceListener listener = null;

    @SuppressLint("InflateParams")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        View root = getLayoutInflater().inflate(R.layout.activity_main, null);

        setContentView(root);

        // Initialize the ViewPager and set an adapter
        ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new TabsStatePagerAdapter((getSupportFragmentManager())));
        final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
                .getDisplayMetrics());
        pager.setPageMargin(pageMargin);
        PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        //Expand tabs as required.
        tabs.setShouldExpand(true);
        tabs.setViewPager(pager);
        // Bind the tabs to the ViewPager

        // continued from above
        tabs.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
            }

            @Override
            public void onPageScrollStateChanged(int state) {
            }

            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            }
        });
        new DeviceSearch().execute();
        android.net.wifi.WifiManager wifi = (android.net.wifi.WifiManager) getSystemService(android.content.Context.WIFI_SERVICE);
        lock = wifi.createMulticastLock("Airlock");
        lock.setReferenceCounted(false);
        lock.acquire();

    }

    /**
     * Called when the activity is first created.
     */

    // This method will override by child class. Then base class can get the
    // fragment
    protected Fragment getSampleFragment() {
        return null;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    protected void onDestroy() {
        if (jmdns != null) {
            if (listener != null) {
                jmdns.removeServiceListener(type, listener);
                listener = null;
            }
            jmdns.unregisterAllServices();
            try {
                jmdns.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            jmdns = null;
        }

        lock.release();
        Log.i(TAG, "Lock Released");
        super.onStop();
    }

    @Override
    protected void onStop() {
        if (jmdns != null) {
            if (listener != null) {
                jmdns.removeServiceListener(type, listener);
                listener = null;
            }
            jmdns.unregisterAllServices();
            try {
                jmdns.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            jmdns = null;
        }

        lock.release();
        Log.i(TAG, "Lock Released");
        super.onStop();
    }

    @Override
    protected void onPause() {
        if (jmdns != null) {
            if (listener != null) {
                jmdns.removeServiceListener(type, listener);
                listener = null;
            }
            jmdns.unregisterAllServices();
            try {
                jmdns.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            jmdns = null;
        }

        lock.release();
        Log.i(TAG, "Lock Released");
        super.onStop();
    }

    @Override
    protected void onResume() {
        new DeviceSearch().execute();
        super.onResume();
    }

    public void buildURL(final String url) {
        handler.postDelayed(new Runnable() {
            public void run() {
                Toast.makeText(getApplicationContext(), "Apple TV Found!",
                        Toast.LENGTH_SHORT).show();
                /*
                 * TextView t = (TextView)findViewById(R.id.text);
         * t.setText(msg+"\n=== "+t.getText());
         */
            }
        }, 1);

        Log.i(TAG, " Apple TV Found!");
        Log.i(TAG, " IP Address Is:" + url);
        isfound = true;
        URL = url;

    }

    private class DeviceSearch extends AsyncTask<Void, Void, Integer> {
        @Override
        protected void onPreExecute() {

        }

        @Override
        protected Integer doInBackground(Void... arg0) {

            try {
                jmdns = JmDNS.create();
                jmdns.addServiceListener(type,
                        listener = new ServiceListener() {

                            @Override
                            public void serviceResolved(ServiceEvent ev) {
                                buildURL("http://"
                                        + ev.getInfo().getHostAddress() + ":"
                                        + ev.getInfo().getPort());
                            }

                            @Override
                            public void serviceRemoved(ServiceEvent ev) {
                                buildURL("Service removed: " + ev.getName());
                                // spinner.setVisibility(View.VISIBLE);
                            }

                            @Override
                            public void serviceAdded(ServiceEvent event) {
                                // Required to force serviceResolved to be
                                // called again (after the first search)
                                jmdns.requestServiceInfo(event.getType(),
                                        event.getName(), 1);
                            }
                        });
                // serviceInfo = ServiceInfo.create("_test._tcp.local.",
                // "AndroidTest", 0, "plain test service from android");
                // jmdns.registerService(serviceInfo);
                Log.i(TAG, " Service Discovery Started");
            } catch (IOException e) {
                e.printStackTrace();
                return 1;
            }

            return 0;
        }

        protected void onPostExecute(Integer result) {

        }

    }


}




Java Source Code List

com.laer.easycast.AppConstant.java
com.laer.easycast.BuildConfig.java
com.laer.easycast.DeviceCommand.java
com.laer.easycast.DeviceConnectionService.java
com.laer.easycast.DeviceConnection.java
com.laer.easycast.DeviceResponse.java
com.laer.easycast.Device.java
com.laer.easycast.FirstPane.java
com.laer.easycast.ImagePane.java
com.laer.easycast.MainActivity.java
com.laer.easycast.MusicPane.java
com.laer.easycast.PagerSlidingTabStrip.java
com.laer.easycast.PlayCommand.java
com.laer.easycast.RateCommand.java
com.laer.easycast.ScrubCommand.java
com.laer.easycast.StatusCommand.java
com.laer.easycast.StopCommand.java
com.laer.easycast.TabsStatePagerAdapter.java
com.laer.easycast.Utils.java
com.laer.easycast.VideoPane.java