Search in sources :

Example 21 with XmlPullParser

use of org.xmlpull.v1.XmlPullParser in project android_frameworks_base by ParanoidAndroid.

the class NinePatchDrawable method inflate.

@Override
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs) throws XmlPullParserException, IOException {
    super.inflate(r, parser, attrs);
    TypedArray a = r.obtainAttributes(attrs, com.android.internal.R.styleable.NinePatchDrawable);
    final int id = a.getResourceId(com.android.internal.R.styleable.NinePatchDrawable_src, 0);
    if (id == 0) {
        throw new XmlPullParserException(parser.getPositionDescription() + ": <nine-patch> requires a valid src attribute");
    }
    final boolean dither = a.getBoolean(com.android.internal.R.styleable.NinePatchDrawable_dither, DEFAULT_DITHER);
    final BitmapFactory.Options options = new BitmapFactory.Options();
    if (dither) {
        options.inDither = false;
    }
    options.inScreenDensity = r.getDisplayMetrics().noncompatDensityDpi;
    final Rect padding = new Rect();
    final Rect opticalInsets = new Rect();
    Bitmap bitmap = null;
    try {
        final TypedValue value = new TypedValue();
        final InputStream is = r.openRawResource(id, value);
        bitmap = BitmapFactory.decodeResourceStream(r, value, is, padding, options);
        is.close();
    } catch (IOException e) {
    // Ignore
    }
    if (bitmap == null) {
        throw new XmlPullParserException(parser.getPositionDescription() + ": <nine-patch> requires a valid src attribute");
    } else if (bitmap.getNinePatchChunk() == null) {
        throw new XmlPullParserException(parser.getPositionDescription() + ": <nine-patch> requires a valid 9-patch source image");
    }
    setNinePatchState(new NinePatchState(new NinePatch(bitmap, bitmap.getNinePatchChunk(), "XML 9-patch"), padding, opticalInsets, dither), r);
    mNinePatchState.mTargetDensity = mTargetDensity;
    a.recycle();
}
Also used : Rect(android.graphics.Rect) InputStream(java.io.InputStream) NinePatch(android.graphics.NinePatch) IOException(java.io.IOException) Paint(android.graphics.Paint) Bitmap(android.graphics.Bitmap) TypedArray(android.content.res.TypedArray) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) BitmapFactory(android.graphics.BitmapFactory) TypedValue(android.util.TypedValue)

Example 22 with XmlPullParser

use of org.xmlpull.v1.XmlPullParser in project android_frameworks_base by ParanoidAndroid.

the class AnimationDrawable method inflate.

@Override
public void inflate(Resources r, XmlPullParser parser, AttributeSet attrs) throws XmlPullParserException, IOException {
    TypedArray a = r.obtainAttributes(attrs, com.android.internal.R.styleable.AnimationDrawable);
    super.inflateWithAttributes(r, parser, a, com.android.internal.R.styleable.AnimationDrawable_visible);
    mAnimationState.setVariablePadding(a.getBoolean(com.android.internal.R.styleable.AnimationDrawable_variablePadding, false));
    mAnimationState.mOneShot = a.getBoolean(com.android.internal.R.styleable.AnimationDrawable_oneshot, false);
    a.recycle();
    int type;
    final int innerDepth = parser.getDepth() + 1;
    int depth;
    while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && ((depth = parser.getDepth()) >= innerDepth || type != XmlPullParser.END_TAG)) {
        if (type != XmlPullParser.START_TAG) {
            continue;
        }
        if (depth > innerDepth || !parser.getName().equals("item")) {
            continue;
        }
        a = r.obtainAttributes(attrs, com.android.internal.R.styleable.AnimationDrawableItem);
        int duration = a.getInt(com.android.internal.R.styleable.AnimationDrawableItem_duration, -1);
        if (duration < 0) {
            throw new XmlPullParserException(parser.getPositionDescription() + ": <item> tag requires a 'duration' attribute");
        }
        int drawableRes = a.getResourceId(com.android.internal.R.styleable.AnimationDrawableItem_drawable, 0);
        a.recycle();
        Drawable dr;
        if (drawableRes != 0) {
            dr = r.getDrawable(drawableRes);
        } else {
            while ((type = parser.next()) == XmlPullParser.TEXT) {
            // Empty
            }
            if (type != XmlPullParser.START_TAG) {
                throw new XmlPullParserException(parser.getPositionDescription() + ": <item> tag requires a 'drawable' attribute or child tag" + " defining a drawable");
            }
            dr = Drawable.createFromXmlInner(r, parser, attrs);
        }
        mAnimationState.addFrame(dr, duration);
        if (dr != null) {
            dr.setCallback(this);
        }
    }
    setFrame(0, true, false);
}
Also used : TypedArray(android.content.res.TypedArray) XmlPullParserException(org.xmlpull.v1.XmlPullParserException)

Example 23 with XmlPullParser

use of org.xmlpull.v1.XmlPullParser in project android_frameworks_base by ParanoidAndroid.

the class Drawable method createFromXmlInner.

/**
     * Create from inside an XML document.  Called on a parser positioned at
     * a tag in an XML document, tries to create a Drawable from that tag.
     * Returns null if the tag is not a valid drawable.
     */
public static Drawable createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs) throws XmlPullParserException, IOException {
    Drawable drawable;
    final String name = parser.getName();
    if (name.equals("selector")) {
        drawable = new StateListDrawable();
    } else if (name.equals("level-list")) {
        drawable = new LevelListDrawable();
    /* Probably not doing this.
        } else if (name.equals("mipmap")) {
            drawable = new MipmapDrawable();
        */
    } else if (name.equals("layer-list")) {
        drawable = new LayerDrawable();
    } else if (name.equals("transition")) {
        drawable = new TransitionDrawable();
    } else if (name.equals("color")) {
        drawable = new ColorDrawable();
    } else if (name.equals("shape")) {
        drawable = new GradientDrawable();
    } else if (name.equals("scale")) {
        drawable = new ScaleDrawable();
    } else if (name.equals("clip")) {
        drawable = new ClipDrawable();
    } else if (name.equals("rotate")) {
        drawable = new RotateDrawable();
    } else if (name.equals("animated-rotate")) {
        drawable = new AnimatedRotateDrawable();
    } else if (name.equals("animation-list")) {
        drawable = new AnimationDrawable();
    } else if (name.equals("inset")) {
        drawable = new InsetDrawable();
    } else if (name.equals("bitmap")) {
        //noinspection deprecation
        drawable = new BitmapDrawable(r);
        if (r != null) {
            ((BitmapDrawable) drawable).setTargetDensity(r.getDisplayMetrics());
        }
    } else if (name.equals("nine-patch")) {
        drawable = new NinePatchDrawable();
        if (r != null) {
            ((NinePatchDrawable) drawable).setTargetDensity(r.getDisplayMetrics());
        }
    } else {
        throw new XmlPullParserException(parser.getPositionDescription() + ": invalid drawable tag " + name);
    }
    drawable.inflate(r, parser, attrs);
    return drawable;
}
Also used : XmlPullParserException(org.xmlpull.v1.XmlPullParserException)

Example 24 with XmlPullParser

use of org.xmlpull.v1.XmlPullParser in project android_frameworks_base by ParanoidAndroid.

the class VideoEditorImpl method load.

/**
     *  the project form XML
     */
private void load() throws FileNotFoundException, XmlPullParserException, IOException {
    final File file = new File(mProjectPath, PROJECT_FILENAME);
    /**
         *  Load the metadata
         */
    final FileInputStream fis = new FileInputStream(file);
    try {
        final List<String> ignoredMediaItems = new ArrayList<String>();
        final XmlPullParser parser = Xml.newPullParser();
        parser.setInput(fis, "UTF-8");
        int eventType = parser.getEventType();
        String name;
        MediaItem currentMediaItem = null;
        Overlay currentOverlay = null;
        boolean regenerateProjectThumbnail = false;
        while (eventType != XmlPullParser.END_DOCUMENT) {
            switch(eventType) {
                case XmlPullParser.START_TAG:
                    {
                        name = parser.getName();
                        if (TAG_PROJECT.equals(name)) {
                            mAspectRatio = Integer.parseInt(parser.getAttributeValue("", ATTR_ASPECT_RATIO));
                            final boolean mRegenPCM = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_REGENERATE_PCM));
                            mMANativeHelper.setAudioflag(mRegenPCM);
                        } else if (TAG_MEDIA_ITEM.equals(name)) {
                            final String mediaItemId = parser.getAttributeValue("", ATTR_ID);
                            try {
                                currentMediaItem = parseMediaItem(parser);
                                mMediaItems.add(currentMediaItem);
                            } catch (Exception ex) {
                                Log.w(TAG, "Cannot load media item: " + mediaItemId, ex);
                                currentMediaItem = null;
                                // First media item is invalid, mark for project thumbnail removal
                                if (mMediaItems.size() == 0) {
                                    regenerateProjectThumbnail = true;
                                }
                                // Ignore the media item
                                ignoredMediaItems.add(mediaItemId);
                            }
                        } else if (TAG_TRANSITION.equals(name)) {
                            try {
                                final Transition transition = parseTransition(parser, ignoredMediaItems);
                                // media items are ignored
                                if (transition != null) {
                                    mTransitions.add(transition);
                                }
                            } catch (Exception ex) {
                                Log.w(TAG, "Cannot load transition", ex);
                            }
                        } else if (TAG_OVERLAY.equals(name)) {
                            if (currentMediaItem != null) {
                                try {
                                    currentOverlay = parseOverlay(parser, currentMediaItem);
                                    currentMediaItem.addOverlay(currentOverlay);
                                } catch (Exception ex) {
                                    Log.w(TAG, "Cannot load overlay", ex);
                                }
                            }
                        } else if (TAG_OVERLAY_USER_ATTRIBUTES.equals(name)) {
                            if (currentOverlay != null) {
                                final int attributesCount = parser.getAttributeCount();
                                for (int i = 0; i < attributesCount; i++) {
                                    currentOverlay.setUserAttribute(parser.getAttributeName(i), parser.getAttributeValue(i));
                                }
                            }
                        } else if (TAG_EFFECT.equals(name)) {
                            if (currentMediaItem != null) {
                                try {
                                    final Effect effect = parseEffect(parser, currentMediaItem);
                                    currentMediaItem.addEffect(effect);
                                    if (effect instanceof EffectKenBurns) {
                                        final boolean isImageClipGenerated = Boolean.parseBoolean(parser.getAttributeValue("", ATTR_IS_IMAGE_CLIP_GENERATED));
                                        if (isImageClipGenerated) {
                                            final String filename = parser.getAttributeValue("", ATTR_GENERATED_IMAGE_CLIP);
                                            if (new File(filename).exists() == true) {
                                                ((MediaImageItem) currentMediaItem).setGeneratedImageClip(filename);
                                                ((MediaImageItem) currentMediaItem).setRegenerateClip(false);
                                            } else {
                                                ((MediaImageItem) currentMediaItem).setGeneratedImageClip(null);
                                                ((MediaImageItem) currentMediaItem).setRegenerateClip(true);
                                            }
                                        } else {
                                            ((MediaImageItem) currentMediaItem).setGeneratedImageClip(null);
                                            ((MediaImageItem) currentMediaItem).setRegenerateClip(true);
                                        }
                                    }
                                } catch (Exception ex) {
                                    Log.w(TAG, "Cannot load effect", ex);
                                }
                            }
                        } else if (TAG_AUDIO_TRACK.equals(name)) {
                            try {
                                final AudioTrack audioTrack = parseAudioTrack(parser);
                                addAudioTrack(audioTrack);
                            } catch (Exception ex) {
                                Log.w(TAG, "Cannot load audio track", ex);
                            }
                        }
                        break;
                    }
                case XmlPullParser.END_TAG:
                    {
                        name = parser.getName();
                        if (TAG_MEDIA_ITEM.equals(name)) {
                            currentMediaItem = null;
                        } else if (TAG_OVERLAY.equals(name)) {
                            currentOverlay = null;
                        }
                        break;
                    }
                default:
                    {
                        break;
                    }
            }
            eventType = parser.next();
        }
        computeTimelineDuration();
        // Regenerate project thumbnail
        if (regenerateProjectThumbnail) {
            generateProjectThumbnail();
            regenerateProjectThumbnail = false;
        }
    } finally {
        if (fis != null) {
            fis.close();
        }
    }
}
Also used : ArrayList(java.util.ArrayList) XmlPullParser(org.xmlpull.v1.XmlPullParser) MediaImageItem(android.media.videoeditor.MediaImageItem) FileInputStream(java.io.FileInputStream) IOException(java.io.IOException) FileNotFoundException(java.io.FileNotFoundException) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) MediaItem(android.media.videoeditor.MediaItem) File(java.io.File)

Example 25 with XmlPullParser

use of org.xmlpull.v1.XmlPullParser in project android_frameworks_base by ParanoidAndroid.

the class AppOpsService method readState.

void readState() {
    synchronized (mFile) {
        synchronized (this) {
            FileInputStream stream;
            try {
                stream = mFile.openRead();
            } catch (FileNotFoundException e) {
                Slog.i(TAG, "No existing app ops " + mFile.getBaseFile() + "; starting empty");
                return;
            }
            boolean success = false;
            try {
                XmlPullParser parser = Xml.newPullParser();
                parser.setInput(stream, null);
                int type;
                while ((type = parser.next()) != XmlPullParser.START_TAG && type != XmlPullParser.END_DOCUMENT) {
                    ;
                }
                if (type != XmlPullParser.START_TAG) {
                    throw new IllegalStateException("no start tag found");
                }
                int outerDepth = parser.getDepth();
                while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
                    if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
                        continue;
                    }
                    String tagName = parser.getName();
                    if (tagName.equals("pkg")) {
                        readPackage(parser);
                    } else {
                        Slog.w(TAG, "Unknown element under <app-ops>: " + parser.getName());
                        XmlUtils.skipCurrentTag(parser);
                    }
                }
                success = true;
            } catch (IllegalStateException e) {
                Slog.w(TAG, "Failed parsing " + e);
            } catch (NullPointerException e) {
                Slog.w(TAG, "Failed parsing " + e);
            } catch (NumberFormatException e) {
                Slog.w(TAG, "Failed parsing " + e);
            } catch (XmlPullParserException e) {
                Slog.w(TAG, "Failed parsing " + e);
            } catch (IOException e) {
                Slog.w(TAG, "Failed parsing " + e);
            } catch (IndexOutOfBoundsException e) {
                Slog.w(TAG, "Failed parsing " + e);
            } finally {
                if (!success) {
                    mUidOps.clear();
                }
                try {
                    stream.close();
                } catch (IOException e) {
                }
            }
        }
    }
}
Also used : FileNotFoundException(java.io.FileNotFoundException) XmlPullParser(org.xmlpull.v1.XmlPullParser) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream)

Aggregations

XmlPullParser (org.xmlpull.v1.XmlPullParser)665 XmlPullParserException (org.xmlpull.v1.XmlPullParserException)614 IOException (java.io.IOException)376 FileNotFoundException (java.io.FileNotFoundException)185 FileInputStream (java.io.FileInputStream)184 File (java.io.File)107 ArrayList (java.util.ArrayList)75 StringReader (java.io.StringReader)65 AttributeSet (android.util.AttributeSet)61 Test (org.junit.Test)57 TypedArray (android.content.res.TypedArray)56 InputStream (java.io.InputStream)48 AtomicFile (android.util.AtomicFile)47 HashMap (java.util.HashMap)42 BridgeXmlBlockParser (com.android.layoutlib.bridge.android.BridgeXmlBlockParser)39 FileReader (java.io.FileReader)36 BufferedInputStream (java.io.BufferedInputStream)30 XmlPullParserFactory (org.xmlpull.v1.XmlPullParserFactory)29 RemoteException (android.os.RemoteException)28 ResourceValue (com.android.ide.common.rendering.api.ResourceValue)28