Example usage for android.os Looper getMainLooper

List of usage examples for android.os Looper getMainLooper

Introduction

In this page you can find the example usage for android.os Looper getMainLooper.

Prototype

public static Looper getMainLooper() 

Source Link

Document

Returns the application's main looper, which lives in the main thread of the application.

Usage

From source file:ai.api.lejossample.MainActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    PreferenceManager.setDefaultValues(this, R.xml.preferences, false);

    commandText = (TextView) findViewById(R.id.commandText);
    connectButton = (Button) findViewById(R.id.connectButton);
    addressEdit = (EditText) findViewById(R.id.addressEdit);

    aiButton = (AIButton) findViewById(R.id.micButton);

    handler = new Handler(Looper.getMainLooper());

    initTTS();//from  w w w.  ja v  a 2  s.  c o  m
}

From source file:com.fastbootmobile.encore.app.fragments.SongsFragment.java

public SongsFragment() {
    mHandler = new Handler(Looper.getMainLooper());
}

From source file:com.kescoode.android.yong.volley.toolbox.BasicNetwork.java

/**
 * @param httpStack HTTP stack to be used
 * @param pool      a buffer pool that improves GC performance in copy operations
 *//*from   w  w  w. j  a v a 2 s.  c  om*/
public BasicNetwork(HttpStack httpStack, ByteArrayPool pool) {
    this(httpStack, pool, new ExecutorDelivery(new Handler(Looper.getMainLooper())));
}

From source file:com.android.deskclock.Utils.java

public static void enforceMainLooper() {
    if (Looper.getMainLooper() != Looper.myLooper()) {
        throw new IllegalAccessError("May only call from main thread.");
    }/*from  w  w w. ja  va 2s  . c om*/
}

From source file:com.murrayc.galaxyzoo.app.syncadapter.SyncAdapter.java

public SyncAdapter(final Context context, final boolean autoInitialize) {
    super(context, autoInitialize);
    mHandler = new Handler(Looper.getMainLooper());

    mClient = new ZooniverseClient(context, Config.SERVER);
    mSubjectAdder = new SubjectAdder(context, mClient.getRequestQueue());

    //We don't listen for the SharedPreferences changes here because it doesn't currently
    //work across processes, so our listener would never be called.
}

From source file:com.ryan.ryanreader.fragments.UserProfileDialog.java

@Override
public final void prepare(final Context context, final LinearLayout items) {

    final LoadingView loadingView = new LoadingView(context, R.string.download_waiting, true, true);
    items.addView(loadingView);//from ww w  . j a  v  a  2 s. co  m

    username = getArguments().getString("user");
    final CacheManager cm = CacheManager.getInstance(context);

    RedditAPI.getUser(cm, username, new APIResponseHandler.UserResponseHandler(context) {
        @Override
        protected void onDownloadStarted() {
            if (!active)
                return;
            loadingView.setIndeterminate(R.string.download_connecting);
        }

        @Override
        protected void onSuccess(final RedditUser user, long timestamp) {

            new Handler(Looper.getMainLooper()).post(new Runnable() {
                public void run() {

                    if (!active)
                        return;

                    loadingView.setDone(R.string.download_done);

                    final LinearLayout karmaLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.karma);
                    items.addView(karmaLayout);

                    final TextView linkKarma = (TextView) karmaLayout.findViewById(R.id.layout_karma_text_link);
                    final TextView commentKarma = (TextView) karmaLayout
                            .findViewById(R.id.layout_karma_text_comment);

                    linkKarma.setText(String.valueOf(user.link_karma));
                    commentKarma.setText(String.valueOf(user.comment_karma));

                    items.addView(propView(context, R.string.userprofile_created,
                            RRTime.formatDateTime(user.created_utc * 1000, context), false));

                    if (user.has_mail != null) {
                        items.addView(propView(context, R.string.userprofile_hasmail,
                                user.has_mail ? R.string.general_true : R.string.general_false, false));
                    }

                    if (user.has_mod_mail != null) {
                        items.addView(propView(context, R.string.userprofile_hasmodmail,
                                user.has_mod_mail ? R.string.general_true : R.string.general_false, false));
                    }

                    if (user.is_friend) {
                        items.addView(
                                propView(context, R.string.userprofile_isfriend, R.string.general_true, false));
                    }

                    if (user.is_gold) {
                        items.addView(
                                propView(context, R.string.userprofile_isgold, R.string.general_true, false));
                    }

                    if (user.is_mod) {
                        items.addView(propView(context, R.string.userprofile_moderator, R.string.general_true,
                                false));
                    }

                    final Button commentsButton = new Button(context);
                    commentsButton.setText(R.string.userprofile_viewcomments);
                    commentsButton.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            final Intent intent = new Intent(context, CommentListingActivity.class);
                            intent.setData(Uri.parse(Constants.Reddit
                                    .getUri("/user/" + username + "/comments.json").toString()));
                            startActivity(intent);
                            dismiss();
                        }
                    });
                    items.addView(commentsButton);
                    // TODO use margin? or framelayout? scale padding dp
                    // TODO change button color
                    commentsButton.setPadding(20, 20, 20, 20);

                    final Button postsButton = new Button(context);
                    postsButton.setText(R.string.userprofile_viewposts);
                    postsButton.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {
                            final Intent intent = new Intent(context, PostListingActivity.class);
                            intent.putExtra("subreddit", new RedditSubreddit("/user/" + username + "/submitted",
                                    "Submitted by " + username, false));
                            startActivity(intent);
                            dismiss();
                        }
                    });
                    items.addView(postsButton);
                    // TODO use margin? or framelayout? scale padding dp
                    postsButton.setPadding(20, 20, 20, 20);

                }
            });
        }

        @Override
        protected void onCallbackException(Throwable t) {
            BugReportActivity.handleGlobalError(context, t);
        }

        @Override
        protected void onFailure(final RequestFailureType type, final Throwable t, final StatusLine status,
                final String readableMessage) {

            new Handler(Looper.getMainLooper()).post(new Runnable() {
                public void run() {

                    if (!active)
                        return;

                    loadingView.setDone(R.string.download_failed);

                    final RRError error = General.getGeneralErrorForFailure(context, type, t, status);
                    items.addView(new ErrorView(getSupportActivity(), error));
                }
            });
        }

        @Override
        protected void onFailure(final APIFailureType type) {

            new Handler(Looper.getMainLooper()).post(new Runnable() {
                public void run() {

                    if (!active)
                        return;

                    loadingView.setDone(R.string.download_failed);

                    final RRError error = General.getGeneralErrorForFailure(context, type);
                    items.addView(new ErrorView(getSupportActivity(), error));
                }
            });
        }

    }, RedditAccountManager.getInstance(context).getDefaultAccount(), CacheRequest.DownloadType.FORCE, true,
            context);
}

From source file:com.jerrellmardis.amphitheatre.task.DownloadTaskHelper.java

public static void traverseSmbFiles(SmbFile root, NtlmPasswordAuthentication auth)
        throws SmbException, MalformedURLException {
    int fileCount = 0;
    boolean video_folder = false;
    final Video v = new Video();
    Handler h = new Handler(Looper.getMainLooper()) {
        @Override//from   www .j  a v  a  2s  .com
        public void handleMessage(Message msg) {
            //                            super.handleMessage(msg);
            Video vid = (Video) msg.getData().getSerializable("VIDEO");
            Log.d(TAG, "Handle " + msg.getData().getInt("WHEN") + " " + vid.getName());
            updateSingleVideo(vid, null);
        }

    };

    for (SmbFile f : root.listFiles()) {
        if (f.getParent().contains("Entertainment Media")) {
            //                Log.d(TAG, "Discovered "+f.getPath()+" "+f.isDirectory());
        }
        if (f.isDirectory()) {
            try {
                //TODO Port VOB folder support to USB and internal storage
                SmbFile[] directoryContents = f.listFiles();
                //                    Log.d(TAG, "Going into directory "+f.getPath());
                //If this works, then we can explore
                //Let's do some quick name checking to for time savings
                if (f.getName().contains("Entertainment Media")) {
                    //                        Log.d(TAG, Arrays.asList(f.listFiles()).toString());
                }
                if (!f.getName().contains("iTunes") && !f.getName().contains("Digi Pix")
                        && !f.getName().contains("AppData") && !f.getName().startsWith(".")
                        && !f.getName().contains("Avid") && !f.getName().contains("Spotify")
                        && !f.getName().contains("audacity_temp") && !f.getName().contains("Media_previews")
                        && !f.getName().contains("GFX_previews")
                        && !f.getName().contains("Samsung Install Files") && !f.getName().contains("AE Renders")
                        && !f.getName().contains("LocalData") && !f.getName().contains("$RECYCLE")
                        && !f.getName().contains("Encore DVD") && !f.getName().contains("16 GB Photo card")
                        && !f.getName().contains("Ignore") && !f.getName().contains("Documents") //TEMP
                        && !f.getName().contains("Downloads") //TEMP
                        && !f.getName().contains("TypeGEMs") //TEMP
                        && !f.getName().contains("KofC7032Web") //TEMP
                        && !f.getName().contains("hype mobile docs") //TEMP
                        && !f.getName().contains("Thrive Music Video") //TEMP
                        /*&& f.getPath().contains("Entertainment") //TEMP*/
                        && !f.getName().contains("Preview Files")) {
                    Log.d(TAG, "Check " + f.getPath());
                    traverseSmbFiles(f, auth);
                } else {
                    //                        Log.d(TAG, "Don't check " + f.getPath());
                }
            } catch (Exception e) {
                //This folder isn't accessible
                Log.d(TAG, "Inaccessible: " + f.getName() + " " + e.getMessage());
                //This will save us time in the traversal
            }
        } else/* if(f.getPath().contains("Films"))*/ { //TEMP
            //Is this something we want to add?
            //                Log.d(TAG, "Non-directory "+f.getPath());
            if (VideoUtils.isVideoFile(f.getPath())) {
                Log.d(TAG, f.getName() + " is a video");
                //Perhaps. Let's do some checking.
                /* VOB check
                If the files are in a structure like:
                { Movie Name } -> VIDEO_TS -> VTS_nn_n.vob
                        
                Then use the movie name as the source, and each vob url will
                be added in a comma-separated list to the video url string
                */

                if (f.getPath().contains("VIDEO_TS")) {
                    Log.d(TAG, "Special case for " + f.getPath());
                    //We have a special case!
                    String grandparentPath = f.getPath().substring(0, f.getPath().indexOf("VIDEO_TS"));
                    SmbFile grandparent = new SmbFile(grandparentPath, auth);

                    //Let's delete this video and all like it from our video database
                    //TODO Makes more sense to not delete and replace a video, just to update in place
                    //                        Log.d(TAG, "Purge where video_url like "+"%" + grandparent.getPath().replace("'", "\'") + "%");
                    List<Video> videos = Select.from(Video.class).where(Condition.prop("video_url")
                            .like("%" + grandparent.getPath().replace("'", "\'") + "%")).list();
                    //                        Log.d(TAG, "Purging "+videos.size()+" item(s)");
                    for (Video vx : videos) {
                        //                            Log.d(TAG, "Deleting "+vx.getVideoUrl());
                        vx.delete();
                    }

                    v.setName(grandparent.getName().replace("/", "").replace("_", " ") + ".avi"); //FIXME VOB currently not supported
                    v.setSource(FileSource.SMB);
                    v.setIsMatched(true); //Kind of a lie, but we know it's a thing!
                    //Get all the video files
                    ArrayList<String> urls = new ArrayList<>();
                    for (SmbFile f2 : grandparent.listFiles()) {
                        for (SmbFile f3 : f2.listFiles()) {
                            if (VideoUtils.isVideoFile(f3.getPath())) {
                                //Presumably in order
                                urls.add(f3.getPath());
                            }
                        }
                    }
                    //                        Log.d(TAG, urls.toString()); //This works well
                    v.setVideoUrl(urls);
                    video_folder = true;
                } else {
                    //Add the video like normal
                    //Let's delete this video and all like it from our video database
                    List<Video> videos = Select.from(Video.class)
                            .where(Condition.prop("video_url").like("%" + f.getPath().replace("'", "''") + "%"))
                            .list();
                    //                        Log.d(TAG, "Purging "+videos.size()+" item(s)");
                    for (Video vx : videos) {
                        //                            Log.d(TAG, "Deleting "+vx.getVideoUrl());
                        vx.delete();
                    }

                    v.setName(f.getName());
                    v.setSource(FileSource.SMB);
                    v.setVideoUrl(f.getPath());

                    fileCount++;
                    //Send a request to update metadata every second, to prevent as many 429 errors and memory exceptions
                    Message m = new Message();
                    Bundle mBundle = new Bundle();
                    mBundle.putSerializable("VIDEO", v.clone());
                    mBundle.putInt("WHEN", (int) (1000 * fileCount + Math.round(Math.random() * 100)));
                    m.setData(mBundle);
                    //                        h.sendEmptyMessageDelayed(1000 * fileCount, 1000 * fileCount);
                    h.sendMessageDelayed(m, 1000 * fileCount);
                    Log.d(TAG, "Queued " + mBundle.getInt("WHEN") + "  -  " + v.getName());
                    v.save(); //Need to save here, otherwise purging won't work as expected
                }

                //                    Log.d(TAG, v.toString());

                //                    return;
            }
            //Ignore otherwise
        }
    }
    //Let's do VOB video
    if (video_folder) {
        //            Log.d(TAG, "Done rooting through "+root.getPath());
        Log.d(TAG, "Created info for VOB " + v.toString());
        fileCount++;
        //Send a request to update metadata every second, to prevent as many 429 errors and memory exceptions
        Message m = new Message();
        Bundle mBundle = new Bundle();
        mBundle.putSerializable("VIDEO", v.clone());
        m.setData(mBundle);
        //                        h.sendEmptyMessageDelayed(1000 * fileCount, 1000 * fileCount);
        h.sendMessageDelayed(m, 1000 * fileCount);
        Log.d(TAG, "Queued " + 1000 * fileCount + "  -  " + v.getName());
        v.save(); //Need to save here, otherwise purging won't work as expected
    }
}

From source file:com.android.deskclock.Utils.java

public static void enforceNotMainLooper() {
    if (Looper.getMainLooper() == Looper.myLooper()) {
        throw new IllegalAccessError("May not call from main thread.");
    }/*from   w ww  .  j ava2 s  .c  o  m*/
}

From source file:com.scvngr.levelup.core.test.SupportLoaderTestCase.java

/**
 * Runs a Loader synchronously and returns the result of the load. The loader will be started,
 * stopped, and destroyed by this method so it cannot be reused.
 *
 * @param loader The loader to run synchronously
 * @return The result from the loader/*ww  w . j av  a2s .c om*/
 */
public <T> T getLoaderResultSynchronously(final Loader<T> loader) {
    // The test thread blocks on this queue until the loader puts its result in
    final ArrayBlockingQueue<T> queue = new ArrayBlockingQueue<T>(1);
    final CountDownLatch latch = new CountDownLatch(1);

    // This callback runs on the "main" thread and unblocks the test thread
    // when it puts the result into the blocking queue
    final OnLoadCompleteListener<T> listener = new OnLoadCompleteListener<T>() {
        @Override
        public void onLoadComplete(final Loader<T> completedLoader, final T data) {
            // Shut the loader down
            completedLoader.unregisterListener(this);
            completedLoader.stopLoading();
            completedLoader.reset();

            // Store the result, unblocking the test thread
            if (null != data) {
                queue.add(data);
            }
            latch.countDown();
        }
    };

    // This handler runs on the "main" thread of the process since AsyncTask
    // is documented as needing to run on the main thread and many Loaders use
    // AsyncTask
    final Handler mainThreadHandler = new Handler(Looper.getMainLooper()) {
        @Override
        public void handleMessage(final Message msg) {
            loader.registerListener(0, listener);
            loader.startLoading();
        }
    };

    // Ask the main thread to start the loading process
    mainThreadHandler.sendEmptyMessage(0);

    // Block on the queue waiting for the result of the load to be inserted
    T result;
    while (true) {
        try {
            latch.await();
            result = queue.peek();
            break;
        } catch (final InterruptedException e) {
            throw new RuntimeException("waiting thread interrupted", e);
        }
    }

    return result;
}

From source file:com.felkertech.n.tv.presenters.CardPresenter.java

@Override
public void onBindViewHolder(Presenter.ViewHolder viewHolder, Object item) {
    final CumulusChannel jsonChannel = (CumulusChannel) item;
    final ImageCardView cardView = (ImageCardView) viewHolder.view;

    cardView.setTitleText(jsonChannel.getName());
    cardView.setContentText(jsonChannel.getNumber());
    cardView.setMainImageDimensions(CARD_WIDTH, CARD_HEIGHT);
    if (jsonChannel.getLogo() == null || jsonChannel.getLogo().isEmpty()) {
        cardView.setMainImage(mContext.getResources().getDrawable(R.drawable.c_banner_3_2));
        cardView.findViewById(R.id.info_field)
                .setBackgroundColor(mContext.getResources().getColor(R.color.colorPrimaryDark));
    } else {//from  w  w w .j a  v a 2 s . c  o  m
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    final Bitmap logo = Picasso.with(mContext).load(jsonChannel.getLogo())
                            .error(R.drawable.c_banner_3_2).centerInside().resize(CARD_WIDTH, CARD_HEIGHT)
                            .get();
                    new Handler(Looper.getMainLooper()).post(new Runnable() {
                        @Override
                        public void run() {
                            try {
                                cardView.getMainImageView().setImageBitmap(logo);
                                Palette colors = Palette.from(logo).generate();
                                if (colors.getDarkVibrantSwatch() != null) {
                                    cardView.findViewById(R.id.info_field)
                                            .setBackgroundColor(colors.getDarkVibrantSwatch().getRgb());
                                } else if (colors.getSwatches().size() > 0) {
                                    cardView.findViewById(R.id.info_field)
                                            .setBackgroundColor(colors.getSwatches().get(0).getRgb());
                                } else {
                                    cardView.findViewById(R.id.info_field).setBackgroundColor(
                                            ContextCompat.getColor(mContext, R.color.colorPrimaryDark));
                                }
                            } catch (IllegalArgumentException e) {
                                Log.e(TAG, "There was a problem loading " + jsonChannel.getLogo());
                                e.printStackTrace();
                            }
                        }
                    });
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
    }
}